Share via


風險降低:XML 結構描述驗證

在 .NET Framework 4.6 中,如果使用複合索引鍵且其中一個索引鍵是空的,則 XSD 結構描述驗證會偵測出唯一條件約束違規。

影響

此變更的影響很小:根據結構描述規格的規定,因使用內含空白索引鍵的複合索引鍵而造成 xsd:unique 違規時,會出現結構描述驗證錯誤。

風險降低

當複合索引鍵包含一個空白索引鍵時,可設定是否要偵測結構描述驗證錯誤:

  • 自目標為 .NET Framework 4.6 的應用程式開始,預設值為啟用結構描述驗證錯誤偵測;但您也可以選擇不使用,如此便不會偵測結構描述驗證錯誤。

  • 若應用程式是在 .NET Framework 4.6 上執行,但目標為 .NET Framework 4.5.2 及更舊版,則預設為不偵測結構描述驗證錯誤;但您也可以選擇使用此功能,以偵測結構描述驗證錯誤。

您可以使用 AppContext 類別定義 System.Xml.IgnoreEmptyKeySequences 參數值,以設定此行為。 由於參數的預設值是 false (不忽略空的索引鍵序列),因此您可以使用下列程式碼,將參數值設為 true,讓目標為 NET Framework 4.6 的應用程式不使用這項行為:

// 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 及舊版的應用程式,因為參數預設值為 true (會忽略空的索引鍵序列),所以您可以使用下列程式碼,將參數值設為 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)

另請參閱