Los diagnósticos de excepciones se suprimen cuando el método IExceptionHandler.TryHandleAsync devuelve un valor verdadero.

El middleware del controlador de excepciones de ASP.NET Core ya no registra diagnósticos para excepciones manejadas por IExceptionHandler de forma predeterminada.

Versión introducida

.NET 10 Preview 7

Comportamiento anterior

Anteriormente, el middleware del controlador de excepciones registró diagnósticos sobre las excepciones controladas por IExceptionHandler.

Los diagnósticos de excepciones son:

Nuevo comportamiento

A partir de .NET 10, si IExceptionHandler.TryHandleAsync devuelve true, los diagnósticos de excepciones ya no se registran de forma predeterminada.

Tipo de cambio disruptivo

Este es un cambio de comportamiento.

Motivo del cambio

Los usuarios de ASP.NET Core han dado su opinión de que el comportamiento anterior era indeseable. Su IExceptionHandler implementación informó que la excepción fue controlada, pero el middleware de gestión de errores todavía registró el error en la telemetría de la aplicación.

ASP.NET Core ahora sigue el comportamiento esperado por los usuarios mediante la supresión de diagnósticos cuando IExceptionHandler controla la excepción. Las opciones de configuración también están disponibles para personalizar el comportamiento de diagnóstico de excepciones si es necesario.

Si desea que las excepciones controladas continúen registrando telemetría, puede usar la nueva ExceptionHandlerOptions.SuppressDiagnosticsCallback opción:

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

El context pasado a la devolución de llamada incluye información sobre la excepción, la solicitud y si la excepción fue gestionada. La callback devuelve false para indicar que no se deben suprimir los diagnósticos, restaurando así el comportamiento anterior.

Las APIs afectadas