Middleware: O Middleware de Gestor de Exceções lança a exceção original se o handler não for encontrado

Antes ASP.NET Core 5.0, o Middleware do Gestor de Exceções executa o gestor de exceções configurado quando ocorre uma exceção. Se o manipulador de exceções, configurado via ExceptionHandlingPath, não for encontrado, é produzida uma resposta HTTP 404. A resposta é enganadora porque:

  • Parece ser um erro do utilizador.
  • Oculta o facto de ter ocorrido uma exceção no servidor.

Para corrigir o erro enganador no ASP.NET Core 5.0, ExceptionHandlerMiddleware lança a exceção original se o manipulador de exceções não for encontrado. Como resultado, o servidor produz uma resposta HTTP 500. A resposta será mais fácil de examinar nos registos do servidor ao depurar o erro que ocorreu.

Para discussão, veja o issue do GitHub dotnet/aspnetcore#25288.

Versão introduzida

5.0 RC 1

Comportamento antigo

O Middleware do Gestor de Exceções produz uma resposta HTTP 404 se o gestor de exceções configurado não for encontrado.

Novo comportamento

O Middleware do Gestor de Exceções lança a exceção original se o handler de exceções configurado não for encontrado.

Motivo da mudança

O erro HTTP 404 não torna óbvio que houve uma exceção no servidor. Esta alteração produz um erro HTTP 500 para tornar óbvio que:

  • O problema não é causado por um erro do utilizador.
  • Foi encontrada uma exceção no servidor.

Não há alterações na API. Todas as aplicações existentes continuarão a compilar e a correr. A exceção lançada é tratada pelo servidor. Por exemplo, a exceção é convertida numa resposta de erro HTTP 500 por Kestrel ou HTTP.sys.

APIs afetadas

Nenhum