Поделиться через


Устранение рисков. Проверка схемы 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)

См. также