Angular 6错误处理-HttpErrorResponse具有未定义的状态

Gel*_*elu 4 rest error-handling json http-status-codes angular

我有一个Angular 6客户端,它使用通过.Net Web Api开发的REST Api。

除错误处理外,其他所有东西都在工作。当我尝试处理错误以对不同的状态码(404、403、409、500 ...)做出不同反应时,我简直无法使其正常工作。HttpErrorResponse对象没有应假定的任何字段(例如“状态”或“错误”)。

我提供了一个超级简单的服务来重现该问题:

在service.ts上请求

 public test(): Observable<any> {
    let url = this.templatesUrl + '/myMethod';
    console.log('GET myMethod ' + url);

    return this.http.get<any>(url)
                      .pipe(catchError(this.handleError));
  }
Run Code Online (Sandbox Code Playgroud)

错误处理程序(与官方文档相当直接):

 private handleError(error: HttpErrorResponse) {
    console.warn(error);

    if (error.error instanceof ErrorEvent) {
      // A client-side or network error occurred. Handle it accordingly.
      console.error('An error occurred:', error.error.message);
    } else {
      // The backend returned an unsuccessful response code.
      // The response body may contain clues as to what went wrong,
      console.error(
        `Backend returned code ${error.status}, ` +
        `body was: ${error.message}`);
    }
    // return an observable with a user-facing error message
    return throwError('Unexpected error');
  }
Run Code Online (Sandbox Code Playgroud)

.Net方面的服务:

[HttpGet]
[Route("myMethod")]
public IHttpActionResult myDotNetMethod()
{
    return InternalServerError(new Exception("Details about the issue"));
}
Run Code Online (Sandbox Code Playgroud)

调用该服务,并返回状态代码500和一个json对象:

响应状态:

Chrome显示请求

响应标头是json:

响应标头,它是json

json对象:

返回的json对象

日志显示的内容:没有状态,几乎是一个空对象:

日志显示的内容,没有状态,几乎没有对象

像HttpErrorResponse这样的松散几乎是空的。但是API的响应很好,状态代码也存在,并且json对象也存在。

我想念什么?

更新:如果您想知道日志中显示的“内部服务器错误”背后隐藏的是什么(这只是chrome生成的调用堆栈):

在此处输入图片说明

更新2:这是显微镜下的错误对象。它只是“内部服务器错误”。没有状态或消息的痕迹。

在此处输入图片说明

Gel*_*elu 6

解决...由于拦截器,该对象为空。因此,如果发生类似的情况,请检查一下。

很抱歉浪费了每个人的时间,我没有意识到那个特定拦截器的存在。