在Angular httpinterceptor中处理.net核心API异常

时间:2020-10-28 22:57:32

标签: angular .net-core asp.net-core-webapi

我正在从.Net Core API中的方法抛出新的Exception(“ messages”),并且在startup.cs中包含以下代码

 ''''app.UseExceptionHandler(a => a.Run(async context =>
        {
            var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
            var exception = exceptionHandlerPathFeature.Error;

            var result = JsonConvert.SerializeObject(new { error = exception.Message,
                                                StatusCode = (int?)HttpStatusCode.BadRequest });
            context.Response.ContentType = "application/json";
            await context.Response.WriteAsync(result);
        }));''''

当我签入邮递员时,得到的回复如下:

{
"error": "Error in Refresh() Method -IDX10000: The parameter 'token' cannot be a 'null' or an empty object.\r\nParameter name: token",
"StatusCode": 400 }

现在,我正在尝试使用拦截器在Angular中处理此问题,但在开发人员工具中扩展时出现“ err”,没有高于json错误响应的地方,即使当我声明(err:HttpErrorResponse)时,它甚至都没有进入

''''export class ErrorInterceptor implements HttpInterceptor {
constructor(private authenticationService: AuthenticationService) { }

intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req)
    .pipe(catchError((err: HttpErrorResponse) => {
            console.log ('error is:', err.error);
            return Observable.throw(err.error);
        }));
} ''''

这是开发人员工具显示'err'值的方式:

HttpErrorResponse
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for (unknown url): 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: null
__proto__: HttpResponseBase

我在做什么错?我不是在处理异常还是从API正确传递了异常?

0 个答案:

没有答案
相关问题