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)

Viz také