Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
BinderOptions.ErrorOnUnknownConfiguration Tidigare användes enbart för att skapa ett undantag om ett värde fanns i konfigurationen men inte i den modell som är bunden till. Om den här egenskapen är inställd på true
, kastas ett undantag även om värdet i konfigurationen inte kan konverteras till typen av värde i modellen.
Version lanserad
Förhandsversion 1 av .NET 8
Tidigare beteende
Tidigare svalde följande kod tyst undantagen för fälten som innehöll ogiltiga uppräkningar:
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.
}
Nytt beteende
Från och med .NET 8 genereras ett InvalidOperationException utfall om ett konfigurationsvärde inte kan konverteras till typen av värde i modellen.
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Det tidigare beteendet var förvirrande för vissa utvecklare. De angav BinderOptions.ErrorOnUnknownConfiguration till true
och förväntade sig att ett undantag skulle utlösas om något problem uppstod när konfigurationen var bunden.
Rekommenderad åtgärd
Om din app har konfigurationsvärden som inte kan konverteras till egenskaperna i den bundna modellen ändrar eller tar du bort värdena.
Alternativt kan du ange BinderOptions.ErrorOnUnknownConfiguration till false
.
Berörda API:er
- 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>)