Устранение рисков. Проверка схемы 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 (пустые последовательности ключей не игнорируются), для приложений, предназначенных для .NET Framework 4.6, можно отключить это поведение, используя следующий код для задания значения параметра 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)

Для приложений, предназначенных для .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)

См. также