Partager via


Les diagnostics d’exception sont supprimés lorsque IExceptionHandler.TryHandleAsync retourne true

L’intergiciel du gestionnaire d’exceptions ASP.NET Core n’enregistre plus par défaut les diagnostics pour les exceptions gérées par IExceptionHandler.

Version introduite

.NET 10 Preview 7

Comportement précédent

Auparavant, l’intergiciel du gestionnaire d’exceptions a enregistré des diagnostics sur les exceptions gérées par IExceptionHandler.

Les diagnostics d’exception sont les suivants :

  • Connexion UnhandledException à ILogger.
  • Écriture de l’événement Microsoft.AspNetCore.Diagnostics.HandledException dans Microsoft.Extensions.Logging.EventSource.
  • Ajout de la error.type balise à la http.server.request.duration métrique.

Nouveau comportement

À compter de .NET 10, si IExceptionHandler.TryHandleAsync retourne true, les diagnostics d’exception ne sont plus enregistrés par défaut.

Type de changement cassant

Ce changement est un changement de comportement.

Raison de la modification

ASP.NET utilisateurs principaux ont donné des commentaires indiquant que le comportement précédent n’était pas souhaitable. Leur IExceptionHandler implémentation a signalé que l’exception a été gérée, mais que le middleware de gestion des erreurs a toujours enregistré l’erreur dans les données de télémétrie de l’application.

ASP.NET Core suit désormais le comportement attendu par les utilisateurs en supprimant les diagnostics lors IExceptionHandler de la gestion de l’exception. Les options de configuration sont également disponibles pour personnaliser le comportement des diagnostics d’exception si nécessaire.

Si vous souhaitez que les exceptions gérées continuent d’enregistrer les données de télémétrie, vous pouvez utiliser la nouvelle ExceptionHandlerOptions.SuppressDiagnosticsCallback option :

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

Le context transmis au rappel inclut des informations sur l’exception, la requête et indique si l’exception a été gérée. Le rappel retourne false pour indiquer que les diagnostics ne doivent pas être supprimés, ce qui restaure le comportement précédent.

API affectées