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.
När Microsoft.Extensions.Configuration.Xml används för att läsa ett XML-dokument som har upprepade XML-element utan attribut Name , har posterna Configuration som skapats med dessa upprepade element nu ett index som läggs till i deras konfigurationssökväg.
Version lanserad
.NET 6
Tidigare beteende
Överväg följande XML-kodfragment som visar upprepade element utan ett särskiljande Name attribut.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Konfigurationerna som skapades från dessa XML-filer var:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
och
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
respektive.
Nytt beteende
De konfigurationer som skapats från XML-filerna i avsnittet Föregående beteende är nu:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
och
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
respektive.
Typ av brytande ändring
Den här ändringen kan påverka binär kompatibilitet.
Orsak till ändring
Den här ändringen introducerades för att fullt ut stödja upprepade XML-element som inte har något Name attribut. Det tidigare beteendet tillät endast upprepade element att ange unika värden (med hjälp av attribut eller underelement). Om upprepade XML-element hade samma attribut utlöstes ett undantag.
Rekommenderad åtgärd
För att få det ursprungliga beteendet kan du uppdatera XML-koden för att komprimera de två attributen till samma element. Till exempel:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Du kan också uppdatera koden för att förvänta dig index (till exempel 0, 1, 2) i IConfiguration nycklarna:
configRoot.GetSection("Level1:Level2")
Blir
configRoot.GetSection("Level1:Level2:0")
Berörda API:er
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource