Aracılığıyla paylaş


BackgroundService'ten işlenmeyen özel durumlar

Önceki sürümlerde, işlenmeyen bir BackgroundService özel durum oluştuğunda, özel durum kaybolur ve hizmet yanıt vermiyor gibi görünür. .NET 6, özel durumu günlüğe kaydetme ve konağı durdurma yoluyla bu davranışı düzeltir.

Açıklama değiştirildi

Önceki .NET sürümlerinde, geçersiz BackgroundService.ExecuteAsync(CancellationToken) kılmadan bir özel durum oluştuğunda, özel durum kaybolur ve hizmet yanıt vermiyor gibi görünür. Konak çalışmaya devam eder ve hiçbir ileti günlüğe kaydedilmez.

.NET 6'dan başlayarak, geçersiz BackgroundService.ExecuteAsync(CancellationToken) kılmadan bir özel durum oluştuğunda, özel durum geçerli ILoggeröğesine kaydedilir. Varsayılan olarak, işlenmeyen bir özel durumla karşılaşıldığında konak durdurulur.

Sürüm kullanıma sunulmuştur

.NET 6

Değişiklik nedeni

Yeni davranış, işlenmeyen özel durumlarla karşılaşıldığında diğer uygulama modellerinin davranışıyla tutarlıdır. Geliştiriciler hatayla karşılaştığında ancak günlüğe hiçbir şey kaydedilmediğinde BackgroundService de bu durum geliştiricilerin kafasını karıştırır. İşlenmeyen özel durumlar yoksayılmaması gerektiğinden en iyi varsayılan davranış konağı durdurmaktır. Dikkat edilmesi gereken bir sorunu belirtir.

Konağı durdurmamak için içinde işlenmeyen bir özel duruma BackgroundService izin vermenin önceki davranışını korumayı tercih ederseniz olarak ayarlayabilirsiniz HostOptions.BackgroundServiceExceptionBehavior BackgroundServiceExceptionBehavior.Ignore.

Host.CreateBuilder(args)
    .ConfigureServices(services =>
    {
        services.Configure<HostOptions>(hostOptions =>
        {
            hostOptions.BackgroundServiceExceptionBehavior = BackgroundServiceExceptionBehavior.Ignore;
        });
    });

Etkilenen API’ler