Omezení rizik: Ověřování schématu XML
V rozhraní .NET Framework 4.6 zjistí ověření schématu XSD porušení jedinečného omezení, pokud se použije složený klíč a jeden klíč je prázdný.
Dopad
Dopad této změny by měl být minimální: na základě specifikace schématu se očekává chyba ověření schématu, pokud xsd:unique
je porušena pomocí složeného klíče s prázdným klíčem.
Zmírnění
Jestli se zjistí chyba ověření schématu, pokud má složený klíč jeden prázdný klíč, je konfigurovatelná funkce:
Počínaje aplikacemi, které cílí na rozhraní .NET Framework 4.6, je detekce chyby ověření schématu ve výchozím nastavení povolena; Je však možné se z ní odhlásit, aby se nezjistila chyba ověření schématu.
V aplikacích, které běží v rozhraní .NET Framework 4.6, ale cílí na rozhraní .NET Framework 4.5.2 a starší verze, není ve výchozím nastavení zjištěna chyba ověření schématu; Je však možné se k němu přihlásit, aby byla zjištěna chyba ověření schématu.
Toto chování lze nakonfigurovat pomocí AppContext třídy k definování hodnoty System.Xml.IgnoreEmptyKeySequences
přepínače. Vzhledem k tomu, že výchozí hodnota přepínače je false
(prázdné sekvence klíčů nejsou ignorovány), můžou aplikace, které cílí na rozhraní .NET Framework 4.6, odhlásit chování pomocí následujícího kódu k nastavení hodnoty přepínače na 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)
U aplikací, které cílí na rozhraní .NET Framework 4.5.2 a starší verze, protože výchozí hodnota přepínače je true
(prázdné sekvence klíčů jsou ignorovány), je možné zajistit, aby složený klíč s prázdným klíčem vygeneroval chybu ověření schématu pomocí následujícího kódu k nastavení hodnoty přepínače na 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)