ASP.Net核心UseExceptionHandler没有处理所有异常?

时间:2018-02-28 09:34:34

标签: asp.net-core-2.0

我有一个ASP.Net Core 2 web api项目。 我已将以下内容添加到Startup.cs文件中的Configure方法中 app.UseExceptionHandler();

我在邮差测试中注意到我得到了一个"无法得到回应"结果。 服务器端日志记录显示该错误与我的数据库中缺少的表有关。哪个好,我可以解决这个问题。但我的问题是为什么服务器不会返回500内部服务器错误?为什么它会死亡,并且对Postman没有任何回应?

所以,在我的Controller中,我故意抛出一个Exception来测试处理程序,并从Postman调用URL,实际上,我按预期收到了500内部服务器错误响应。

为什么"更深层次"从EFCore抛出的错误没有被ExceptionHandler中间件处理,并且崩溃了我的应用程序?我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

在startup.cs中,将UseMvc()标签移动到管道的底部,即

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  ...
  app.UseExceptionHandler();
  app.UseMvcWithDefaultRoute(); 
}

就我而言,当浏览器启动的路由不存在时,请求管道在启动时出错。在那种情况下,我的app.UseMvc()之前的app.UseExceptionHandler()未执行。