ミドルウェア:ハンドラーが見つからない場合、例外ハンドラー ミドルウェアから元の例外がスローされる

ASP.NET Core 5.0 より前では、例外が発生したときに、Exception Handler Middleware によって構成済みの例外ハンドラーが実行されます。 ExceptionHandlingPath で構成された例外ハンドラーが見つからない場合は、HTTP 404 応答が生成されます。 この応答は、次のような誤解を招きます。

  • ユーザー エラーのように見える。
  • サーバーで例外が発生したという事実がわからなくなる。

ASP.NET Core 5.0 のこの誤解を招くエラーに対処するために、例外ハンドラーが見つからない場合、ExceptionHandlerMiddleware からは元の例外がスローされます。 その結果、サーバーによって HTTP 500 応答が生成されます。 この応答であれば、発生したエラーをデバッグするときにサーバー ログで簡単に調べることができます。

ディスカッションについては、GitHub イシュー dotnet/aspnetcore#25288 を参照してください。

導入されたバージョン

5.0 RC 1

以前の動作

構成された例外ハンドラーが見つからない場合は、Exception Handler Middleware によって HTTP 404 応答が生成されます。

新しい動作

構成された例外ハンドラーが見つからない場合は、Exception Handler Middleware からは元の例外がスローされます。

変更理由

HTTP 404 エラーを受け取っても、サーバーで例外が発生したことが明らかにはなりません。 この変更により、HTTP 500 エラーが生成され、次のことが明らかになります。

  • 問題の原因はユーザー エラーではない。
  • サーバー上で例外が発生した。

API の変更はありません。 既存のすべてのアプリは引き続きコンパイルされ、実行されます。 スローされた例外は、サーバーによって処理されます。 たとえば、例外は Kestrel または HTTP.sys によって HTTP 500 エラー応答に変換されます。

影響を受ける API

なし