Middleware: Ausnahmehandlermiddleware löst ursprüngliche Ausnahme aus, wenn der Handler nicht gefunden wurde

Vor ASP.NET Core 5.0 führt die Ausnahmehandlermiddleware im Falle einer Ausnahme den konfigurierten Ausnahmehandler aus. Wenn der Ausnahmehandler, der über ExceptionHandlingPath konfiguriert wurde, nicht gefunden werden kann, wird eine HTTP 404-Antwort erstellt. Die Antwort ist aus den folgenden Gründen irreführend:

  • Anscheinend handelt es sich um einen Benutzerfehler.
  • Die Tatsache wird verschleiert, dass auf dem Server eine Ausnahme aufgetreten ist.

Wenn der Ausnahmehandler nicht gefunden werden kann, löst die ExceptionHandlerMiddleware-Klasse die ursprüngliche Ausnahme aus, um den irreführenden Fehler in ASP.NET Core 5.0 zu beheben. Folglich wird eine HTTP 500-Antwort vom Server erzeugt. Beim Debuggen des aufgetretenen Fehlers kann die Antwort in den Serverprotokollen leichter untersucht werden.

Weitere Informationen finden Sie unter GitHub-Issue dotnet/aspnetcore#25288.

Eingeführt in Version

5.0 RC 1

Altes Verhalten

Die Ausnahmehandlermiddleware erzeugt eine HTTP 404-Antwort, wenn der konfigurierte Ausnahmehandler nicht gefunden werden kann.

Neues Verhalten

Die Ausnahmehandlermiddleware löst die ursprüngliche Ausnahme aus, wenn der konfigurierte Ausnahmehandler nicht gefunden werden kann.

Grund für die Änderung

Der HTTP 404-Fehler macht nicht deutlich, dass auf dem Server eine Ausnahme aufgetreten ist. Durch diese Änderung wird ein HTTP 500-Fehler erzeugt, um Folgendes zu verdeutlichen:

  • Das Problem wird nicht durch einen Benutzerfehler verursacht.
  • Auf dem Server ist eine Ausnahme aufgetreten.

Es sind keine API-Änderungen verfügbar. Alle vorhandenen Apps werden weiterhin kompiliert und ausgeführt. Die ausgelöste Ausnahme wird vom Server verarbeitet. Die Ausnahme wird beispielsweise in eine HTTP 500-Fehlerantwort von Kestrel oder HTTP.sys konvertiert.

Betroffene APIs

Keine