GÇ hataları için FileConfigurationSource.OnLoadException geri çağırması çağrıldı

FileConfigurationProviderve türetilmiş türleri (Microsoft tarafından <kullanılır. Extensions.Configuration.JsonConfigurationExtensions.AddJsonFile*>, <Microsoft. Extensions.Configuration.XmlConfigurationExtensions.AddXmlFile*> ve <Microsoft. Extensions.Configuration.IniConfigurationExtensions.AddIniFile*>) artık GÇ hatalarını ayrıştırma OnLoadException hatalarına ek olarak geri çağırmaya iletir.

Sürüm kullanıma sunulmuştur

.NET 11 Önizleme 7

Önceki davranış

Daha önce, bir yapılandırma dosyası açıldığında oluşan GÇ hataları (örneğin, AddJsonFile, AddXmlFile, AddIniFileveya diskte zaten yüklenmiş bir dosya değiştiğinde tetiklenen yeniden yükleme), geri çağırmaya geçirilene FileLoadExceptionContextOnLoadException iletilmiyordu. Yalnızca ayrıştırma hataları bu geri çağırmaya iletildi. GÇ hataları kullanılarak OnLoadExceptiongözlemlenemezdi; bunun yerine kullanılarak UnobservedTaskExceptiongözlemlenebilirdi.

Sonuç olarak, Exception geçirilen FileLoadExceptionContextOnLoadException özelliği her zaman veya InvalidDataExceptionFileNotFoundExceptionşeklindedir. Özel durumu koşulsuz olarak bu türlerden birine dönüştüren kod düzgün çalıştı.

Yeni davranış

.NET 11'den başlayarak GÇ hataları geri çağırmaya FileLoadExceptionContext geçirilene OnLoadException iletilir. GÇ hataları artık kullanılarak TaskScheduler.UnobservedTaskExceptiongözlemlenemez, ancak geri OnLoadException çağırma kaydedilmez.

Sonuç olarak, Exception üzerindeki FileLoadExceptionContext özelliği artık herhangi bir türün (en yaygın olarak IOException) özel durumu olabilir, ancak yapılandırılan IFileProvider (özel sağlayıcılar dahil) tarafından oluşan herhangi bir özel durum olabilir. Bu yeni özel durum türlerini koşulsuz olarak 'a InvalidDataException atayan veya FileNotFoundException artık bir InvalidCastException kod oluşturabilen veya sessizce yanlış işleyebilecek kod.

Kesinti yaratan değişiklik türü

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

Değişiklik nedeni

Bu değişiklik bir hata düzeltmesidir. Yapılandırma dosyası GÇ hataları anlamlı yük hatalarıdır ve geri OnLoadException çağırma kaydeden kod, yalnızca ayrıştırma hatalarını değil, yapılandırma dosyası yüklenirken oluşan tüm hataları gözlemlemeyi bekler. Daha fazla bilgi için bkz. dotnet/runtime#113964.

  • veya kullanarak TaskScheduler.UnobservedTaskExceptiontüretilmiş bir türden GÇ özel durumları FileConfigurationProvider algıladıysanız, bu mantığı geri çağırmaya OnLoadException taşıyın.
  • içinde OnLoadException kayıtlı herhangi bir geri çağırmanın yalnızca InvalidDataException veya FileNotFoundExceptiondeğil herhangi bir türdeki özel durumları işleyebildiğini doğrulayın. Koşulsuz atamalardan kaçının ve bunun yerine desen eşleştirme veya tür denetimleri kullanın.

Etkilenen API'ler