Les éléments XML répétés incluent un index
Quand Microsoft.Extensions.Configuration.Xml est utilisé pour lire un document XML qui a des éléments XML répétés sans attribut Name
, les entrées Configuration
créées avec ces éléments répétés ont maintenant un index ajouté à leur chemin de configuration.
Version introduite
.NET 6
Comportement précédent
Consultez les extraits de code XML suivants qui montrent des éléments répétés sans attribut Name
distinctif.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Les configurations créées à partir de ces fichiers XML étaient les suivantes :
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
and
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
, respectivement.
Nouveau comportement
Les configurations créées à partir des fichiers XML de la section Comportement précédent sont à présent les suivantes :
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
and
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
, respectivement.
Type de changement cassant
Ce changement peut affecter la compatibilité binaire.
Raison du changement
Cette modification a été introduite pour prendre entièrement en charge les éléments XML répétés qui n’ont pas d’attribut Name
. Le comportement précédent autorisait uniquement les éléments répétés à définir des valeurs uniques (à l’aide d’attributs ou de sous-éléments). Si les éléments XML répétés avaient le même attribut, une exception était levée.
Action recommandée
Pour obtenir le comportement d’origine, vous pouvez mettre à jour votre code XML afin de réduire les deux attributs dans le même élément. Par exemple :
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Vous pouvez également mettre à jour votre code pour qu’il s’attende à des index (tels que 0, 1, 2) dans les clés IConfiguration
:
configRoot.GetSection("Level1:Level2")
devient
configRoot.GetSection("Level1:Level2:0")
API affectées
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour