Partilhar via


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

O middleware do manipulador de exceções ASP.NET Core não registra mais diagnósticos para exceções tratadas por IExceptionHandler por predefinição.

Versão introduzida

.NET 10 Prévia 7

Comportamento anterior

Anteriormente, o middleware do manipulador de exceções registrava diagnósticos sobre exceções manipuladas pelo IExceptionHandler.

Os diagnósticos de exceção são:

Novo comportamento

A partir do .NET 10, se IExceptionHandler.TryHandleAsync retornar true, os diagnósticos de exceção não serão mais registrados por padrão.

Tipo de mudança disruptiva

Esta alteração é de natureza comportamental .

Motivo da mudança

ASP.NET Os usuários principais deram feedback de que o comportamento anterior era indesejável. Sua IExceptionHandler implementação relatou que a exceção foi tratada, mas o middleware de tratamento de erros ainda registrou o erro na telemetria do aplicativo.

ASP.NET Core agora segue o comportamento esperado pelos usuários, suprimindo diagnósticos quando IExceptionHandler lida com a exceção. As opções de configuração também estão disponíveis para personalizar o comportamento do diagnóstico de exceções, se necessário.

Se quiser que as exceções tratadas continuem a gravar a telemetria, você pode usar a nova ExceptionHandlerOptions.SuppressDiagnosticsCallback opção:

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

O context passado para o callback inclui informações sobre a exceção, a solicitação e se a exceção foi ou não tratada. A rotina de retorno devolve false para indicar que os diagnósticos não devem ser suprimidos, restaurando assim o comportamento anterior.

APIs afetadas