Aracılığıyla paylaş


Yinelenen XML öğeleri dizin içerir

Microsoft.Extensions.Configuration.Xml özniteliği olmayan yinelenen XML öğeleri içeren bir XML belgesini okumak için kullanıldığında, bu yinelenen öğelerle oluşturulan Name girdilerinin yapılandırma yollarına artık bir dizin eklenmiştir.

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.

Kesinti yaratan değişiklik 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 hata 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, anahtarlar içinde 0, 1, 2 gibi dizinleri bekleyecek şekilde güncelleyebilirsiniz.

configRoot.GetSection("Level1:Level2")

Dönüşür

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

Etkilenen API'ler

Ayrıca bakınız