Risicobeperking: XML-schemavalidatie
In .NET Framework 4.6 detecteert XSD-schemavalidatie een schending van de unieke beperking als een samengestelde sleutel wordt gebruikt en één sleutel leeg is.
Impact
De impact van deze wijziging moet minimaal zijn: op basis van de schemaspecificatie wordt een schemavalidatiefout verwacht als xsd:unique
deze wordt geschonden met behulp van een samengestelde sleutel met een lege sleutel.
Oplossing
Of er een schemavalidatiefout wordt gedetecteerd als een samengestelde sleutel één lege sleutel heeft, een configureerbare functie is:
Vanaf de apps waarop .NET Framework 4.6 is gericht, is de detectie van de schemavalidatiefout standaard ingeschakeld; Het is echter mogelijk om er geen gebruik van te maken, zodat de schemavalidatiefout niet wordt gedetecteerd.
In apps die worden uitgevoerd onder .NET Framework 4.6, maar gericht zijn op .NET Framework 4.5.2 en eerdere versies, wordt standaard geen schemavalidatiefout gedetecteerd; Het is echter mogelijk om zich hiervoor aan te sluiten, zodat de schemavalidatiefout wordt gedetecteerd.
Dit gedrag kan worden geconfigureerd met behulp van de AppContext klasse om de waarde van de System.Xml.IgnoreEmptyKeySequences
switch te definiëren. Omdat de standaardwaarde van de switch is false
(lege sleutelreeksen worden niet genegeerd), kunnen apps die gericht zijn op .NET Framework 4.6, zich afmelden voor het gedrag met behulp van de volgende code om de waarde true
van de switch in te stellen op:
// 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)
Voor apps die gericht zijn op .NET Framework 4.5.2 en eerdere versies, omdat de standaardwaarde van de switch is true
(lege sleutelreeksen worden genegeerd), is het mogelijk om ervoor te zorgen dat een samengestelde sleutel met een lege sleutel een schemavalidatiefout genereert met behulp van de volgende code om de waarde false
van de switch in te stellen op .
// 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)