Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Daha önce, BinderOptions.ErrorOnUnknownConfiguration yalnızca yapılandırmada bir değer varsa ama bağlı olan modelde yoksa özel durum oluşturmak için kullanılıyordu. Şimdi, bu özellik olarak trueayarlanırsa, yapılandırmadaki değer modeldeki değer türüne dönüştürülemiyorsa bir özel durum da oluşturulur.
Sürüm kullanıma sunulmuştur
.NET 8 Preview 1
Önceki davranış
Daha önce, aşağıdaki kod geçersiz enum değerleri içeren alanların özel durumlarını sessizce yutuyordu.
public enum TestSettingsEnum
{
Option1,
Option2,
}
public class MyModelContainingArray
{
public TestSettingsEnum[] Enums { get; set; }
}
public void SilentlySwallowsInvalidItems()
{
var dictionary = new Dictionary<string, string>
{
["Section:Enums:0"] = "Option1",
["Section:Enums:1"] = "Option3", // invalid - ignored
["Section:Enums:2"] = "Option4", // invalid - ignored
["Section:Enums:3"] = "Option2",
};
var configurationBuilder = new ConfigurationBuilder();
configurationBuilder.AddInMemoryCollection(dictionary);
var config = configurationBuilder.Build();
var configSection = config.GetSection("Section");
var model = configSection.Get<MyModelContainingArray>(o => o.ErrorOnUnknownConfiguration = true);
// Only Option1 and Option2 are in the bound collection at this point.
}
Yeni davranış
.NET 8'den başlayarak, bir yapılandırma değeri modeldeki değerin türüne dönüştürülemiyorsa, bir InvalidOperationException oluşturulur.
Kesinti yaratan değişiklik türü
Bu değişiklik davranışsal bir değişikliktir.
Değişiklik nedeni
Önceki davranış bazı geliştiriciler için kafa karıştırıcıydı.
BinderOptions.ErrorOnUnknownConfiguration, true olarak ayarladılar ve yapılandırma bağlanırken herhangi bir sorunla karşılaşılması durumunda bir özel durumun oluşturulmasını beklediler.
Önerilen eylem
Uygulamanızın ilişkili modeldeki özelliklere dönüştürülemez yapılandırma değerleri varsa, değerleri değiştirin veya kaldırın.
Alternatif olarak BinderOptions.ErrorOnUnknownConfigurationfalse ayarlayın.
Etkilenen API'ler
- Microsoft.Extensions.Configuration.ConfigurationBinder.Bind(IConfiguration, Object, Action<BinderOptions>)
- Microsoft.Extensions.Configuration.ConfigurationBinder.Get<T>(IConfiguration, Action<BinderOptions>)
- Microsoft.Extensions.Configuration.ConfigurationBinder.Get(IConfiguration, Type, Action<BinderOptions>)