Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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:
- Registro
UnhandledExceptionen ILogger. - Escribir el
Microsoft.AspNetCore.Diagnostics.HandledExceptionevento en Microsoft.Extensions.Logging.EventSource. - Agregar la
error.typeetiqueta a lahttp.server.request.durationmétrica.
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.
Acción recomendada
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.