Compartilhar via


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

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

Versão introduzida

.NET 10 Versão Prévia 7

Comportamento anterior

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

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

Novo comportamento

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

Tipo de mudança disruptiva

Esta é uma alteração comportamental.

Motivo da alteração

Usuários do ASP.NET Core deram feedback de que o comportamento anterior foi considerado indesejável. Sua IExceptionHandler implementação informou 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 o diagnóstico ao IExceptionHandler lidar com a exceção. As opções de configuração também estão disponíveis para personalizar o comportamento de diagnóstico de exceção, se necessário.

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

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

O context retorno de chamada passado inclui informações sobre a exceção, a solicitação e se a exceção foi tratada. O retorno de chamada retorna false para indicar que o diagnóstico não deve ser suprimido, restaurando assim o comportamento anterior.

APIs afetadas