Entschärfung: XML-Schema-ValidierungMitigation: XML Schema Validation

In .NET Framework 4.6.NET Framework 4.6 ermittelt die XSD-Schemavalidierung einen Verstoß gegen die Unique-Einschränkung, wenn ein Verbundschlüssel verwendet wird und ein Schlüssel leer ist.In the .NET Framework 4.6.NET Framework 4.6, XSD schema validation detects a violation of the unique constraint if a compound key is used and one key is empty.

AuswirkungenImpact

Die Auswirkung dieser Änderung sollte minimal sein: In Abhängigkeit der Schemaspezifikation wir ein Schemavalidierungsfehler erwartet, wenn xsd:unique mithilfe eines Verbundschlüssels mit einem leeren Schlüssel verletzt wird.The impact of this change should be minimal: based on the schema specification, a schema validation error is expected if xsd:unique is violated by using a compound key with an empty key.

ProblemumgehungMitigation

Ob ein Schemavalidierungsfehler erkannt wird, wenn ein Verbundschlüssel über einen leeren Schlüssel verfügt, kann konfiguriert werden:Whether a schema validation error is detected if a compound key has one empty key is a configurable feature:

  • Angefangen bei den Apps, die auf .NET Framework 4.6.NET Framework 4.6 abzielen, ist die Ermittlung des Schemavalidierungsfehlers standardmäßig aktiviert. Es ist jedoch möglich, dieses Verhalten abzuwählen, wodurch der Schemavalidierungsfehler nicht ermittelt wird.Starting with the apps that target the .NET Framework 4.6.NET Framework 4.6, detection of the schema validation error is enabled by default; however, it is possible to opt out of it, so that the schema validation error will not be detected.

  • In unter .NET Framework 4.6.NET Framework 4.6 ausgeführten Apps, die jedoch auf .NET Framework 4.5.2.NET Framework 4.5.2 und frühere Versionen abzielen, wird eine Schemavalidierungsfehler nicht standardmäßig ermittelt. Es ist jedoch möglich, dieses Verhalten zu aktivieren, sodass der Schemavalidierungsfehler ermittelt wird.In apps that run under the .NET Framework 4.6.NET Framework 4.6 but target the .NET Framework 4.5.2.NET Framework 4.5.2 and earlier versions, a schema validation error is not detected by default; however, it is possible to opt into it, so that the schema validation error will be detected.

Dieses Verhalten kann mithilfe der Klasse AppContext konfiguriert werden, um den Wert des Switches System.Xml.IgnoreEmptyKeySequences zu definieren.This behavior can be configured by using the AppContext class to define the value of the System.Xml.IgnoreEmptyKeySequences switch. Da der Standardwert des Switches false (leere Schlüsselsequenzen werden nicht ignoriert) lautet, können auf .NET Framework 4.6.NET Framework 4.6 abzielende Apps dieses Verhalten abwählen, indem der folgende Code verwendet wird, um den Wert des Switches auf true festzulegen:Because the switch's default value is false (empty key sequences are not ignored), apps that target the .NET Framework 4.6.NET Framework 4.6 can opt out of the behavior by using the following code to set the switch's value to true:

// Ignore empty key sequences in apps that target .NET 4.6
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", true);
' Ignore empty key sequences in apps that target .NET 4.6
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", True)

Bei Apps, die auf .NET Framework 4.5.2.NET Framework 4.5.2 und frühere Versionen abzielen, ist es möglich, da der Standardwert des Switches true (leere Schlüsselsequenzen werden ignoriert) lautet, sicherzustellen, dass ein Verbundschlüssel mit einem leeren Schlüssel einen Schemavalidierungsfehler generiert, indem der folgende Code zum Festlegen des Switchwerts auf false verwendet wird.For apps that target the .NET Framework 4.5.2.NET Framework 4.5.2 and earlier versions, because the switch's default value is true (empty key sequences are ignored), it is possible to ensure that a compound key with an empty key does generate a schema validation error by using the following code to set the switch's value to false.

// Do not ignore empty key sequences in apps that target .NET 4.5.1 and earlier
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", false);
' Do Not ignore empty key sequences in apps that target .NET 4.5.1 And earlier
AppContext.SetSwitch("System.Xml.IgnoreEmptyKeySequences", False)

Siehe auchSee Also

NeuausrichtungsänderungenRetargeting Changes