Aracılığıyla paylaş


Azaltma: XML Şema Doğrulaması

.NET Framework 4.6'da, bileşik anahtar kullanılırsa ve bir anahtar boşsa XSD şema doğrulaması benzersiz kısıtlamanın ihlalini algılar.

Etki

Bu değişikliğin etkisi en düşük düzeyde olmalıdır: şema belirtimine göre, boş anahtara sahip bileşik anahtar kullanılarak ihlal edilirse xsd:unique şema doğrulama hatası beklenir.

Risk azaltma

Bileşik anahtarda bir boş anahtar varsa şema doğrulama hatasının algılanıp algılanmadığı yapılandırılabilir bir özelliktir:

  • .NET Framework 4.6'yı hedefleyen uygulamalardan başlayarak, şema doğrulama hatasının algılanması varsayılan olarak etkindir; ancak şema doğrulama hatasının algılanmaması için geri çevirmek mümkündür.

  • .NET Framework 4.6 altında çalışan ancak .NET Framework 4.5.2 ve önceki sürümleri hedefleyen uygulamalarda, varsayılan olarak bir şema doğrulama hatası algılanmaz; ancak şema doğrulama hatasının algılanması için bunu kabul etmek mümkündür.

Bu davranış, anahtarın AppContext değerini System.Xml.IgnoreEmptyKeySequences tanımlamak için sınıfı kullanılarak yapılandırılabilir. Anahtarın varsayılan değeri olduğundan false (boş anahtar dizileri yoksayılmaz), .NET Framework 4.6'yı hedefleyen uygulamalar, anahtarın değerini trueolarak ayarlamak için aşağıdaki kodu kullanarak davranışı geri çevirebilir:

// 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)

Anahtarın varsayılan değeri true (boş anahtar dizileri yoksayıldığından) .NET Framework 4.5.2 ve önceki sürümlerini hedefleyen uygulamalar için, anahtarın değerini falseolarak ayarlamak için aşağıdaki kodu kullanarak boş anahtara sahip bileşik anahtarın şema doğrulama hatası oluşturmasını sağlamak mümkündür.

// 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)

Ayrıca bkz.