Rozwiązanie bezproblemowo działa na Chrome/Edge, jednak problemy pojawiły się przy testowaniu rozwiązania na IE. Poniżej przedstawię wywołanie z poziomu aplikacji klienckiej, następnie metodę w API oraz błąd, który pojawia się w konsoli. Prosiłbym o pomoc.
Klient (wygenerowany przez nswag):
changeLanguage(input: ChangeUserLanguageDto | null | undefined): Observable<void> {
let url_ = this.baseUrl + "/api/services/app/User/ChangeLanguage";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(input);
let options_ : any = {
body: content_,
observe: "response",
responseType: "blob",
headers: new HttpHeaders({
"Content-Type": "application/json",
})
};
return this.http.request("post", url_, options_).pipe(_observableMergeMap((response_ : any) => {
return this.processChangeLanguage(response_);
})).pipe(_observableCatch((response_: any) => {
if (response_ instanceof HttpResponseBase) {
try {
return this.processChangeLanguage(<any>response_);
} catch (e) {
return <Observable<void>><any>_observableThrow(e);
}
} else
return <Observable<void>><any>_observableThrow(response_);
}));
}
protected processChangeLanguage(response: HttpResponseBase): Observable<void> {
const status = response.status;
const responseBlob =
response instanceof HttpResponse ? response.body :
(<any>response).error instanceof Blob ? (<any>response).error : undefined;
let _headers: any = {}; if (response.headers) { for (let key of response.headers.keys()) { _headers[key] = response.headers.get(key); }};
if (status === 200) {
return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {
return _observableOf<void>(<any>null);
}));
} else if (status !== 200 && status !== 204) {
return blobToText(responseBlob).pipe(_observableMergeMap(_responseText => {
return throwException("An unexpected server error occurred.", status, _responseText, _headers);
}));
}
return _observableOf<void>(<any>null);
}
API (metoda wbudowana do frameworka ASP.NET Boilerplate):
public async Task ChangeLanguage(ChangeUserLanguageDto input)
{
await SettingManager.ChangeSettingForUserAsync(
AbpSession.ToUserIdentifier(),
LocalizationSettingNames.DefaultLanguage,
input.LanguageName
);
}
Z kolei błąd z konsoli wygląda następująco. Tutaj garść informacji o nim, które udało mi się znaleźć: https://stackoverflow.com/questions/30896958/xmlhttprequest-network-error-0x80070005-access-is-denied-on-microsoft-edge-bu