Поймать сообщение об ошибке в ANGULAR перехватчик - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь создать централизованный обработчик ошибок как на стороне 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;
        }));
}

Кто-нибудь знает, что я делаю неправильно. Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...