中间件:如果找不到处理程序,则异常处理程序中间件会引发原始异常
在 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 更改。 所有现有的应用将继续编译并运行。 引发的异常由服务器处理。 例如,Kestrel 或 HTTP.sys 会将异常转换为 HTTP 500 错误响应。
受影响的 API
无