在 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
無