Middleware: il middleware del gestore di eccezioni genera un'eccezione originale se il gestore non è stato trovato

Prima di ASP.NET Core 5.0, il middleware del gestore di eccezioni esegue il gestore di eccezioni configurato quando si è verificata un'eccezione. Se non è possibile trovare il gestore di eccezioni configurato tramite ExceptionHandlingPath, viene generata una risposta HTTP 404. La risposta è fuorviante, in quanto:

  • Sembra un errore dell'utente.
  • Nasconde il fatto che si è verificata un'eccezione nel server.

Per risolvere l'errore fuorviante in ASP.NET Core 5.0, ExceptionHandlerMiddleware genera l'eccezione originale se non è possibile trovare il gestore di eccezioni. Di conseguenza, il server genera una risposta HTTP 500. La risposta sarà più semplice da esaminare nei log del server durante il debug dell'errore che si è verificato.

Per la discussione, vedere il problema di GitHub dotnet/aspnetcore#25288.

Versione introdotta

5.0 RC 1

Comportamento precedente

Il middleware del gestore di eccezioni genera una risposta HTTP 404 se non è possibile trovare il gestore di eccezioni configurato.

Nuovo comportamento

Il middleware del gestore di eccezioni genera l'eccezione originale se non è possibile trovare il gestore di eccezioni configurato.

Motivo della modifica

L'errore HTTP 404 non rende evidente che si è verificata un'eccezione nel server. Questa modifica genera un errore HTTP 500 per rendere evidente che:

  • Il problema non è causato da un errore dell'utente.
  • È stata rilevata un'eccezione nel server.

Non sono state apportate modifiche all'API. Tutte le applicazioni esistenti continueranno a essere compilate ed eseguite. L'eccezione generata viene gestita dal server. Ad esempio, l'eccezione viene convertita in una risposta di errore HTTP 500 da Kestrel o HTTP.sys.

API interessate

Nessuno