中间件:如果未找到异常处理程序,中间件将抛出原始异常

在 ASP.NET Core 5.0 之前, 异常处理程序中间件 会在发生异常时执行配置的异常处理程序。 如果找不到通过 ExceptionHandlingPath配置异常处理程序,则会生成 HTTP 404 响应。 响应具有误导性,因为它:

  • 似乎是用户错误。
  • 掩盖了服务器上发生异常的事实。

为了应对 ASP.NET Core 5.0 中的误导性错误,如果找不到异常处理程序,ExceptionHandlerMiddleware 将抛出原始异常。 因此,服务器生成 HTTP 500 响应。 调试发生的错误时,可以更容易地在服务器日志中检查响应。

有关讨论,请参阅 GitHub 问题 dotnet/aspnetcore#25288

已引入的版本

5.0 RC 1

旧行为

如果找不到配置的异常处理程序,异常处理程序中间件将生成 HTTP 404 响应。

新行为

如果找不到配置的异常处理程序,异常处理程序中间件将引发原始异常。

更改原因

HTTP 404 错误不表明服务器上发生了异常。 此更改会生成 HTTP 500 错误,以明显指出:

  • 问题不是由用户错误引起的。
  • 服务器上遇到异常。

没有 API 更改。 所有现有应用将继续编译并运行。 引发的异常由服务器处理。 例如,异常由 KestrelHTTP.sys转换为 HTTP 500 错误响应。

受影响的 API

没有