Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Cuando Microsoft.Extensions.Configuration.Xml se usa para leer un documento XML que tiene elementos XML repetidos sin un Name
atributo, las Configuration
entradas creadas con estos elementos repetidos ahora tienen un índice anexado a su ruta de configuración.
Versión introducida
.NET 6
Comportamiento anterior
Tenga en cuenta los siguientes fragmentos XML que muestran elementos repetidos sin un atributo distintivo Name
.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Las configuraciones creadas a partir de estos archivos XML eran:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
y
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
respectivamente.
Nuevo comportamiento
Las configuraciones creadas a partir de los archivos XML de la sección Comportamiento anterior ahora son:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
y
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
respectivamente.
Tipo de cambio disruptivo
Este cambio puede afectar a la compatibilidad binaria.
Motivo del cambio
Este cambio se introdujo para admitir completamente elementos XML repetidos que no tienen un Name
atributo . El comportamiento anterior solo permite que los elementos repetidos establezcan valores únicos (mediante atributos o subelementos). Si los elementos XML repetidos tenían el mismo atributo, se produjo una excepción.
Acción recomendada
Para obtener el comportamiento original, puede actualizar el XML para combinar los dos atributos en el mismo elemento. Por ejemplo:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Como alternativa, puede actualizar el código para esperar índices (como 0, 1, 2) en las IConfiguration
claves:
configRoot.GetSection("Level1:Level2")
se convierte en
configRoot.GetSection("Level1:Level2:0")
Las APIs afectadas
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource