Dil

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ş bir anahtarla bileşik anahtar kullanımı 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ış, System.Xml.IgnoreEmptyKeySequences anahtarının değerini tanımlamak için AppContext sınıfı kullanılarak yapılandırılabilir. Anahtarın varsayılan değeri false olduğundan (boş anahtar dizileri yoksayılmaz), .NET Framework 4.6'yı hedefleyen uygulamalar, anahtarın değerini true olarak ayarlamak için aşağıdaki kodu kullanarak bu davranışı devre dışı bırakabilir.

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

.NET Framework 4.5.2 ve önceki sürümlerini hedefleyen uygulamalar için, anahtarın varsayılan değeri true olduğundan (boş anahtar dizileri yoksayıldığı için), aşağıdaki kodu kullanarak anahtarın değerini false olarak ayarlamak ve böylece boş anahtara sahip bileşik bir 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.