Åtgärd: XML-schemaverifiering
I .NET Framework 4.6 identifierar XSD-schemavalidering ett brott mot den unika begränsningen om en sammansatt nyckel används och en nyckel är tom.
Påverkan
Effekten av den här ändringen bör vara minimal: baserat på schemaspecifikationen förväntas ett schemaverifieringsfel om xsd:unique
det överträds med hjälp av en sammansatt nyckel med en tom nyckel.
Riskreducering
Om ett schemavalideringsfel identifieras om en sammansatt nyckel har en tom nyckel är en konfigurerbar funktion:
Från och med de appar som riktar in sig på .NET Framework 4.6 aktiveras identifiering av schemavalideringsfelet som standard. Det går dock att välja bort det, så att schemavalideringsfelet inte identifieras.
I appar som körs under .NET Framework 4.6 men riktar in sig på .NET Framework 4.5.2 och tidigare versioner identifieras inte ett schemavalideringsfel som standard. Det är dock möjligt att välja det, så att schemavalideringsfelet identifieras.
Det här beteendet kan konfigureras med hjälp AppContext av klassen för att definiera värdet för växeln System.Xml.IgnoreEmptyKeySequences
. Eftersom växelns standardvärde är false
(tomma nyckelsekvenser ignoreras inte) kan appar som riktar sig mot .NET Framework 4.6 välja bort beteendet med hjälp av följande kod för att ange växelns värde till 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)
För appar som riktar in sig på .NET Framework 4.5.2 och tidigare versioner, eftersom växelns standardvärde är true
(tomma nyckelsekvenser ignoreras), är det möjligt att se till att en sammansatt nyckel med en tom nyckel genererar ett schemavalideringsfel genom att använda följande kod för att ange växelns värde till 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)