Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
BinderOptions.ErrorOnUnknownConfiguration Voorheen werd alleen gebruikt om een uitzondering te genereren als er een waarde bestond in de configuratie, maar niet in het model waaraan is gebonden. Als deze eigenschap is ingesteld op true, wordt er ook een uitzondering gegenereerd als de waarde in de configuratie niet kan worden geconverteerd naar het type waarde in het model.
Geïntroduceerde versie
.NET 8 Preview 1
Vorig gedrag
Voorheen negeerde de volgende code stilzwijgend de fouten voor de velden met ongeldige enumeraties.
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.
}
Nieuw gedrag
Als vanaf .NET 8 een configuratiewaarde niet kan worden geconverteerd naar het type waarde in het model, wordt er een InvalidOperationException gegenereerd.
Type van brekende verandering
Deze wijziging is een gedragswijziging.
Reden voor wijziging
Het vorige gedrag was verwarrend voor sommige ontwikkelaars. Ze stelden BinderOptions.ErrorOnUnknownConfiguration in op true en verwachtten dat er een uitzondering zou worden gegenereerd als er een probleem zou optreden bij het binden van de configuratie.
Aanbevolen actie
Als uw app configuratiewaarden bevat die niet kunnen worden geconverteerd naar de eigenschappen in het afhankelijke model, wijzigt of verwijdert u de waarden.
U kunt ook instellen BinderOptions.ErrorOnUnknownConfiguration op false.
Betreffende API's
- 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>)