Я пытаюсь создать централизованный обработчик ошибок как на стороне API, так и на стороне клиента, но angular перехватчик никогда не перехватывает модель описания ошибки. Сообщение об ошибке в перехватчике всегда: «Http error response для url: 0 Unknown Error». Обработчик ошибок в API всегда перехватывает каждую ошибку и исключение. Когда я использую Почтальон, модель ошибки показывается регулярно
app.UseExceptionHandler(errorApp =>
{
errorApp.Run(async context =>
{
var errorFeature = context.Features.Get<IExceptionHandlerFeature>();
var exception = errorFeature.Error;
var problemDetails = new ProblemDetails
{
Instance = $"urn:myorganization:error:{Guid.NewGuid()}"
};
if (exception is BadHttpRequestException badHttpRequestException)
{
problemDetails.Title = "Invalid request";
problemDetails.Status = (int)typeof(BadHttpRequestException).GetProperty("StatusCode",
BindingFlags.NonPublic | BindingFlags.Instance).GetValue(badHttpRequestException);
problemDetails.Detail = badHttpRequestException.Message;
}
else
{
problemDetails.Title = "An unexpected error occurred!";
problemDetails.Status = 500;
problemDetails.Detail = exception.Message.ToString();
}
// log the exception etc..
context.Response.StatusCode = problemDetails.Status.Value;
context.Response.WriteJson(problemDetails, "application/problem+json");
});
});
, это angular перехватчик:
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
delay(0),
map((event: HttpEvent<any>) => {
this.Loader = true;
return event;
}),
catchError((error: any) => {
console.log('error--->>>', error);
return throwError(error);
}),
finalize(() =>{
this.Loader = false;
}));
}
Кто-нибудь знает, что я делаю неправильно. Спасибо