Powtarzające się elementy XML obejmują indeks
Gdy Microsoft.Extensions.Configuration.Xml jest używany do odczytywania dokumentu XML zawierającego powtarzające się elementy XML bez atrybutu Name
, Configuration
wpisy utworzone przy użyciu tych powtarzających się elementów mają teraz indeks dołączony do ścieżki konfiguracji.
Wprowadzona wersja
.NET 6
Poprzednie zachowanie
Rozważ następujące fragmenty kodu XML, które pokazują powtarzające się elementy bez atrybutu wyróżniającego Name
.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Konfiguracje utworzone na podstawie tych plików XML to:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
oraz
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
na miesiąc.
Nowe zachowanie
Konfiguracje utworzone na podstawie plików XML w sekcji Poprzednie zachowanie są teraz następujące:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
oraz
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
na miesiąc.
Typ zmiany powodującej niezgodność
Ta zmiana może mieć wpływ na zgodność binarną.
Przyczyna wprowadzenia zmiany
Ta zmiana została wprowadzona, aby w pełni obsługiwać powtarzające się elementy XML, które nie mają atrybutu Name
. Poprzednie zachowanie zezwalało tylko na powtarzające się elementy w celu ustawienia unikatowych wartości (przy użyciu atrybutów lub podelementów). Jeśli powtarzające się elementy XML miały ten sam atrybut, został zgłoszony wyjątek.
Zalecana akcja
Aby uzyskać oryginalne zachowanie, możesz zaktualizować kod XML, aby zwinąć dwa atrybuty do tego samego elementu. Na przykład:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Możesz też zaktualizować kod, aby oczekiwał indeksów (takich jak 0, 1, 2) w kluczach IConfiguration
:
configRoot.GetSection("Level1:Level2")
Staje się
configRoot.GetSection("Level1:Level2:0")
Dotyczy interfejsów API
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource