Udostępnij przez


Diagnostyka wyjątków jest pomijana, gdy funkcja IExceptionHandler.TryHandleAsync zwraca wartość true

Oprogramowanie pośredniczące obsługi wyjątków platformy ASP.NET Core nie rejestruje już diagnostyki wyjątków obsługiwanych domyślnie IExceptionHandler .

Wersja wprowadzona

.NET 10 (wersja zapoznawcza 7)

Poprzednie zachowanie

Wcześniej oprogramowanie pośredniczące programu obsługi wyjątków zarejestrowało diagnostykę wyjątków dotyczących wyjątków obsługiwanych przez IExceptionHandlerprogram .

Diagnostyka wyjątków to:

  • Rejestrowanie UnhandledException w usłudze ILogger.
  • Microsoft.AspNetCore.Diagnostics.HandledException Zapisywanie zdarzenia w pliku Microsoft.Extensions.Logging.EventSource.
  • Dodawanie tagu error.typehttp.server.request.duration do metryki.

Nowe zachowanie

Począwszy od platformy .NET 10, jeśli IExceptionHandler.TryHandleAsync zwraca truewartość , diagnostyka wyjątków nie jest już rejestrowana domyślnie.

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

ASP.NET użytkownicy core przekazali opinię, że poprzednie zachowanie było niepożądane. Ich IExceptionHandler implementacja zgłosiła, że wyjątek został obsłużony, ale oprogramowanie pośredniczące obsługujące błąd nadal rejestrowało błąd w telemetrii aplikacji.

ASP.NET Core teraz postępuje zgodnie z zachowaniem oczekiwanym przez użytkowników, pomijając diagnostykę w przypadku IExceptionHandler obsługi wyjątku. Opcje konfiguracji są również dostępne w celu dostosowania zachowania diagnostyki wyjątków w razie potrzeby.

Jeśli chcesz, aby obsługiwane wyjątki nadal rejestrowały dane telemetryczne, możesz użyć nowej ExceptionHandlerOptions.SuppressDiagnosticsCallback opcji:

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

Przekazany context do wywołania zwrotnego zawiera informacje o wyjątku, żądaniu i informację, czy wyjątek został obsłużony. Wywołanie zwrotne powraca false , aby wskazać, że diagnostyka nie powinna być pomijana, co spowoduje przywrócenie poprzedniego zachowania.

Interfejsy API, których dotyczy problem