Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Microsoft.Extensions.Configuration.Xml zum Lesen eines XML-Dokuments mit wiederholten XML-Elementen ohne Attribut Name
verwendet wird, haben die Configuration
mit diesen wiederholten Elementen erstellten Einträge jetzt einen Index an ihren Konfigurationspfad angefügt.
Eingeführte Version
.NET 6
Vorheriges Verhalten
Betrachten Sie die folgenden XML-Codeausschnitte, die wiederholte Elemente ohne ein unterscheidungsmerkendes Name
Attribut anzeigen.
<settings>
<Data ConnectionString="TestConnectionString" />
<Data Provider="MySql" />
</settings>
<configuration>
<Level1>
<Level2 Key1="Value1" />
<Level2 Key2="Value2" />
</Level1>
</configuration>
Die konfigurationen, die aus diesen XML-Dateien erstellt wurden, waren:
Data:ConnectionString = TestConnectionString
Data:Provider = MySql
und
Level1:Level2:Key1 = Value1
Level1:Level2:Key2 = Value2
beziehungsweise.
Neues Verhalten
Die konfigurationen, die aus den XML-Dateien im Abschnitt "Vorheriges Verhalten " erstellt wurden, sind jetzt:
Data:0:ConnectionString = TestConnectionString
Data:1:Provider = MySql
und
Level1:Level2:0:Key1 = Value1
Level1:Level2:1:Key2 = Value2
beziehungsweise.
Art der einschneidenden Änderung
Diese Änderung kann sich auf die Binäre Kompatibilität auswirken.
Grund für Änderung
Diese Änderung wurde eingeführt, um wiederholte XML-Elemente vollständig zu unterstützen, die nicht über ein Name
Attribut verfügen. Das vorherige Verhalten ist nur für wiederholte Elemente zulässig, um eindeutige Werte (mithilfe von Attributen oder Unterelementen) festzulegen. Wenn wiederholte XML-Elemente dasselbe Attribut hatten, wurde eine Ausnahme ausgelöst.
Empfohlene Aktion
Um das ursprüngliche Verhalten zu erhalten, können Sie Ihren XML-Code aktualisieren, um die beiden Attribute in dasselbe Element zu reduzieren. Beispiel:
<configuration>
<Level1>
<Level2 Key1="Value1" Key2="Value2" />
</Level1>
</configuration>
Alternativ können Sie Ihren Code so aktualisieren, dass Indizes (z. B. 0, 1, 2) in den IConfiguration
Schlüsseln erwartet werden:
configRoot.GetSection("Level1:Level2")
wird
configRoot.GetSection("Level1:Level2:0")
Betroffene APIs
- Microsoft.Extensions.Configuration.XmlConfigurationExtensions
- Microsoft.Extensions.Configuration.Xml.XmlStreamConfigurationProvider
- Microsoft.Extensions.Configuration.Xml.XmlConfigurationSource