Freigeben über


Ausnahmediagnose wird unterdrückt, wenn IExceptionHandler.TryHandleAsync "true" zurückgibt.

Die ASP.NET Core-Ausnahmebehandlungs-Middleware zeichnet standardmäßig keine Diagnosedaten mehr für Ausnahmen auf, die von IExceptionHandler behandelt werden.

Eingeführte Version

.NET 10 Preview 7

Vorheriges Verhalten

Früher hat die Middleware des Exception Handlers Diagnoseinformationen zu den durch IExceptionHandler behandelten Ausnahmen aufgezeichnet.

Die Ausnahmediagnose sind:

  • Protokollieren von UnhandledException nach ILogger.
  • Schreiben des Ereignisses Microsoft.AspNetCore.Diagnostics.HandledException in Microsoft.Extensions.Logging.EventSource.
  • Hinzufügen des error.type Tags zur http.server.request.duration Metrik.

Neues Verhalten

Ab .NET 10 gilt: Wenn IExceptionHandler.TryHandleAsynctrue zurückgibt, werden Ausnahmediagnosen standardmäßig nicht mehr aufgezeichnet.

Art der einschneidenden Änderung

Diese Änderung ist eine Verhaltensänderung.

Grund für Änderung

ASP.NET Core-Benutzer haben Feedback gegeben, dass das vorherige Verhalten nicht erwünscht war. Die IExceptionHandler Implementierung berichtete, dass die Ausnahme behandelt wurde, jedoch zeichnete die Fehlerbehandlungs-Middleware weiterhin den Fehler in der Telemetrie der App auf.

ASP.NET Core folgt nun dem von Benutzern erwarteten Verhalten, indem die Diagnose unterdrückt wird, wenn IExceptionHandler eine Ausnahme behandelt. Konfigurationsoptionen stehen auch zur Verfügung, um das Verhalten der Ausnahmediagnose bei Bedarf anzupassen.

Wenn Sie weiterhin Telemetriedaten bei behandelten Ausnahmen aufzeichnen möchten, können Sie die neue Option ExceptionHandlerOptions.SuppressDiagnosticsCallback verwenden:

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

Die an den Callback übergebenen Daten enthalten Informationen zur Ausnahme, zur Anforderung und darüber, ob die Ausnahme behandelt wurde. Der Rückruf gibt false zurück, um anzugeben, dass die Diagnose nicht unterdrückt werden soll, wodurch das vorherige Verhalten wiederhergestellt wird.

Betroffene APIs