Partilhar via


Middleware: Exception Handler Middleware lança exceção original se manipulador não for encontrado

Antes ASP.NET Core 5.0, o Middleware do manipulador de exceções executa o manipulador de exceções configurado quando ocorre uma exceção. Se o manipulador de exceções, configurado via ExceptionHandlingPath, não puder ser encontrado, uma resposta HTTP 404 será produzida. A resposta é enganosa na medida em que:

  • Parece ser um erro do usuário.
  • Esconde o facto de que uma exceção ocorreu no servidor.

Para resolver o erro enganoso no ASP.NET Core 5.0, o ExceptionHandlerMiddleware lança a exceção original se o manipulador de exceção não puder ser encontrado. Como resultado, uma resposta HTTP 500 é produzida pelo servidor. A resposta será mais fácil de examinar nos logs do servidor ao depurar o erro que ocorreu.

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

Versão introduzida

5,0 RC 1

Comportamento antigo

O middleware do manipulador de exceções produz uma resposta HTTP 404 se o manipulador de exceção configurado não puder ser encontrado.

Novo comportamento

O Middleware do manipulador de exceções lançará a exceção original se o manipulador de exceções configurado não puder ser encontrado.

Motivo da mudança

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

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

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

APIs afetadas

Nenhum