Aracılığıyla paylaş


IExceptionHandler.TryHandleAsync true döndürdüğünde, hata tanılamaları devre dışı bırakılıyor

ASP.NET Core özel durum işleyicisi ara yazılımı artık varsayılan olarak IExceptionHandler tarafından işlenen özel durumlar için tanılamaları kaydetmemektedir.

Sürüm kullanıma sunulmuştur

.NET 10 Preview 7

Önceki davranış

Daha önce, özel durum işleyici ara yazılımı tarafından işlenen IExceptionHandler özel durumları hakkında tanılama bilgileri kaydedildi.

Özel durum tanılamaları şunlardır:

  • UnhandledException adresinden ILogger adresine günlüğe kaydetme.
  • Microsoft.AspNetCore.Diagnostics.HandledException olayını Microsoft.Extensions.Logging.EventSource öğesine yazma.
  • error.type etiketini http.server.request.duration metriğe ekleme.

Yeni davranış

.NET 10'dan itibaren, IExceptionHandler.TryHandleAsynctrue döndürürse, istisna tanılamaları artık varsayılan olarak kaydedilmez.

Kesinti yaratan değişiklik türü

Bu değişiklik davranışsal bir değişikliktir.

Değişiklik nedeni

ASP.NET Core kullanıcıları önceki davranışın istenmeyen bir davranış olduğuna ilişkin geri bildirimde bulundu. Onların IExceptionHandler uygulaması, istisnanın işlendiğini bildirdi, ancak hata yönetim orta katman yazılımı yine de hatayı uygulamanın telemetrisine kaydetti.

ASP.NET Core artık özel durumu işlerken IExceptionHandler tanılamayı gizleyerek kullanıcılar tarafından beklenen davranışı izler. Gerekirse özel durum tanılama davranışını özelleştirmek için yapılandırma seçenekleri de kullanılabilir.

İşlenen özel durumların telemetriyi kaydetmeye devam etmesini istiyorsanız, yeni ExceptionHandlerOptions.SuppressDiagnosticsCallback seçeneğini kullanabilirsiniz.

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

context geri çağırma işlevine gönderilen, özel durum, istek ve özel durumun işlenip işlenmediği hakkında bilgi içerir. Geri çağırma, tanılamanın gizlenmemesi gerektiğini ve böylece önceki davranışın geri yüklenmesi gerektiğini belirtmek için döndürür false .

Etkilenen API'ler