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.
Önerilen eylem
Ö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
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource