Megosztás a következőn keresztül:


Ismétlődő XML-elemek közé tartozik az index

Ha Microsoft.Extensions.Configuration.Xml olyan XML-dokumentum olvasására szolgál, amely ismétlődő XML-elemeket tartalmaz attribútum nélkül Name , az ezekkel az Configuration ismétlődő elemekkel létrehozott bejegyzésekhez hozzá van fűzve egy index a konfigurációs útvonalukhoz.

Bevezetett verzió

.NET 6

Előző viselkedés

Vegye figyelembe az alábbi XML-kódrészleteket, amelyek megkülönböztető Name attribútum nélkül jelenítik meg az ismétlődő elemeket.

<settings>
  <Data ConnectionString="TestConnectionString" />
  <Data Provider="MySql" />
</settings>
<configuration>
    <Level1>
        <Level2 Key1="Value1" />
        <Level2 Key2="Value2" />
    </Level1>
</configuration>

Az alábbi XML-fájlokból létrehozott konfigurációk a következők voltak:

Data:ConnectionString = TestConnectionString
Data:Provider = MySql

és

Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2

egyenként.

Új viselkedés

Az Előző viselkedés szakaszban az XML-fájlokból létrehozott konfigurációk a következők:

Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql

és

Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2

egyenként.

A kompatibilitástörő változás típusa

Ez a változás befolyásolhatja a bináris kompatibilitást.

A változás oka

Ezt a módosítást azért vezettük be, hogy teljes mértékben támogassa az olyan ismétlődő XML-elemeket, amelyek nem rendelkeznek attribútummal Name . Az előző viselkedés csak az ismétlődő elemek számára engedélyezett egyedi értékek beállítására (attribútumok vagy alelemek használatával). Ha az ismétlődő XML-elemek ugyanazzal az attribútummal rendelkeztek, kivétel történt.

Az eredeti viselkedés eléréséhez frissítheti az XML-fájlt, hogy a két attribútumot ugyanabba az elembe csukja össze. Példa:

<configuration>
    <Level1>
        <Level2 Key1="Value1" Key2="Value2" />
    </Level1>
</configuration>

Másik lehetőségként frissítheti a kódot úgy, hogy a kulcsokban az indexek (például 0, 1, 2) IConfiguration várhatóak:

configRoot.GetSection("Level1:Level2")

Lesz

configRoot.GetSection("Level1:Level2:0")

Érintett API-k

Lásd még