Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если 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