Partilhar via


Os diagnósticos de exceção são suprimidos quando IExceptionHandler.TryHandleAsync retorna "true"

O middleware de tratamento de exceções ASP.NET Core deixou de registar diagnósticos para exceções tratadas por IExceptionHandler por padrão.

Versão introduzida

.NET 10 Prévia 7

Comportamento anterior

Anteriormente, o middleware do gestor de exceções registava diagnósticos sobre exceções tratadas por IExceptionHandler.

Os diagnósticos excepcionais são:

Novo comportamento

A partir do .NET 10, se IExceptionHandler.TryHandleAsync devolve true, então os diagnósticos de exceções deixam de ser registados automaticamente por defeito.

Tipo de mudança disruptiva

Esta alteração é de natureza comportamental .

Motivo da mudança

ASP.NET utilizadores do Core deram feedback de que o comportamento anterior era indesejável. A implementação deles reportou que a exceção foi tratada, mas o middleware de tratamento de erros ainda registou o erro na telemetria da aplicação.

ASP.NET Core agora segue o comportamento esperado pelos utilizadores ao suprimir diagnósticos quando IExceptionHandler trata da exceção. Existem também opções de configuração disponíveis para personalizar o comportamento de diagnóstico de exceções, se necessário.

Se quiseres que as exceções tratadas continuem a gravar telemetria, podes usar a nova ExceptionHandlerOptions.SuppressDiagnosticsCallback opção:

app.UseExceptionHandler(new ExceptionHandlerOptions
{
    SuppressDiagnosticsCallback = context => false;
});

A context passada para o callback inclui informações sobre a exceção, a requisição e se a exceção foi tratada. O callback retorna false para indicar que os diagnósticos não devem ser suprimidos, restaurando assim o comportamento anterior.

APIs afetadas