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.
Önerilen eylem
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;
});
});