Middleware: o middleware do manipulador de exceção gera uma exceção original quando o manipulador não é encontrado
Antes do ASP.NET Core 5.0, o Middleware do manipulador de exceção executava o manipulador de exceção configurado quando ocorria uma exceção. Quando o manipulador de exceção, configurado por ExceptionHandlingPath não era encontrado, uma resposta HTTP 404 era gerada. A resposta é enganosa, pois:
- Parece ser um erro do usuário.
- Esconde o fato de que ocorreu uma exceção no servidor.
Para resolver o erro enganoso no ASP.NET Core 5.0, o ExceptionHandlerMiddleware
gera a exceção original quando o manipulador de exceção não pode ser encontrado. Como resultado, uma resposta HTTP 500 é produzida pelo servidor. Será mais fácil examinar essa resposta nos logs do servidor ao depurar o erro que ocorreu.
Para ver a discussão sobre isso, confira o problema do GitHub dotnet/aspnetcore#25288.
Versão introduzida
5.0 RC 1
Comportamento antigo
O middleware do manipulador de exceção gerava uma resposta HTTP 404 quando o manipulador de exceção configurado não era encontrado.
Novo comportamento
O middleware do manipulador de exceção gera a exceção original quando o manipulador de exceção configurado não é encontrado.
Motivo da alteração
O erro HTTP 404 não mostra claramente que ocorreu uma exceção no servidor. Essa alteração produz um erro HTTP 500 para mostrar claramente que:
- O problema não é causado por um erro do usuário.
- Uma exceção foi encontrada no servidor.
Ação recomendada
Não há alterações na API. Todos os aplicativos existentes continuarão a ser compilados e executados. A exceção gerada é manipulada pelo servidor. Por exemplo, a exceção é convertida em uma resposta de erro HTTP 500 pelo Kestrel ou HTTP.sys.
APIs afetadas
Nenhum