Aracılığıyla paylaş


Yinelenen XML öğeleri dizin içerir

Microsoft.Extensions.Configuration.Xml Özniteliği olmayan Name yinelenen XML öğeleri içeren bir XML belgesini okumak için kullanıldığında, Configuration bu yinelenen öğelerle oluşturulan girdilerin yapılandırma yollarına eklenmiş bir dizini vardır.

Sürüm kullanıma sunulmuştur

.NET 6

Önceki davranış

Ayırt edici özniteliği olmayan yinelenen öğeleri gösteren aşağıdaki XML kod parçacıklarını Name göz önünde bulundurun.

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

Bu XML dosyalarından oluşturulan yapılandırmalar şunlardı:

Data:ConnectionString = TestConnectionString
Data:Provider = MySql

ve

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

sırasıyla.

Yeni davranış

Önceki davranış bölümündeki XML dosyalarından oluşturulan yapılandırmalar şu şekildedir:

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

ve

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

sırasıyla.

Hataya neden olan değişikliğin türü

Bu değişiklik ikili uyumluluğu etkileyebilir.

Değişiklik nedeni

Bu değişiklik, özniteliği olmayan Name yinelenen XML öğelerini tam olarak desteklemek için kullanıma sunulmuştur. Önceki davranış yalnızca yinelenen öğelerin benzersiz değerler ayarlamasına izin verilir (öznitelikler veya alt öğeler kullanılarak). Yinelenen XML öğeleri aynı özniteliğe sahipse bir özel durum oluştu.

Özgün davranışı elde etmek için XML'nizi güncelleştirerek iki özniteliği aynı öğeye daraltabilirsiniz. Örneğin:

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

Alternatif olarak, kodunuzu anahtarlarda dizinleri (0, 1, 2 gibi) IConfiguration bekleyecek şekilde güncelleştirebilirsiniz:

configRoot.GetSection("Level1:Level2")

Olur

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

Etkilenen API’ler

Ayrıca bkz.