Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Если Microsoft.Extensions.Configuration.Xml используется для чтения XML-документа с повторяющимися XML-элементами без атрибута Name, то записи Configuration, созданные на основе этих повторяющихся элементов, теперь имеют индекс, добавленный к пути их конфигурации.
Представленная версия
.NET 6
Предыдущее поведение
Рассмотрим следующие фрагменты XML, которые отображают повторяющиеся элементы без различающегося атрибута Name .
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Конфигурации, созданные из этих XML-файлов, были:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
и
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
соответственно.
Новое поведение
Конфигурации, созданные из XML-файлов в разделе "Предыдущее поведение ", теперь:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
и
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
соответственно.
Тип разрушающего изменения
Это изменение может повлиять на совместимость двоичных файлов.
Причина изменения
Это изменение было введено для полной поддержки повторяющихся XML-элементов, которые не имеют атрибута Name . Предыдущее поведение позволяло использовать только повторяющиеся элементы для задания уникальных значений (с помощью атрибутов или подэлементов). Если повторяющиеся XML-элементы имели один и тот же атрибут, создается исключение.
Рекомендуемое действие
Чтобы получить исходное поведение, можно обновить XML, чтобы свернуть два атрибута в один и тот же элемент. Рассмотрим пример.
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Кроме того, вы можете обновить код, чтобы ожидать индексов (например, 0, 1, 2) в IConfiguration ключах:
configRoot.GetSection("Level1:Level2")
становится
configRoot.GetSection("Level1:Level2:0")
Затронутые API
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource