Compartir a través de


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

El middleware del controlador de excepciones de ASP.NET Core ya no registra diagnósticos para las excepciones gestionadas por IExceptionHandler de manera 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 no era deseable. Su IExceptionHandler implementación informó de que se controló la excepción, pero el middleware de control 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 objeto pasado a la devolución de llamada incluye información sobre la excepción, la solicitud y si se controló la excepción. La devolución de llamada retorna false para indicar que no se deben suprimir los diagnósticos, de esta manera se restaura el comportamiento anterior.

Las APIs afectadas