Share via


中介軟體:如果找不到處理程式,例外狀況處理常式中介軟體會擲回原始例外狀況

在 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