Atenuação: Validação de esquema XML
No .NET Framework 4.6, a validação de esquema XSD deteta uma violação da restrição exclusiva se uma chave composta for usada e uma chave estiver vazia.
Impacto
O impacto dessa alteração deve ser mínimo: com base na especificação do esquema, um erro de validação de esquema é esperado se xsd:unique
for violado usando uma chave composta com uma chave vazia.
Mitigação
Se um erro de validação de esquema é detetado se uma chave composta tiver uma chave vazia é um recurso configurável:
Começando com os aplicativos destinados ao .NET Framework 4.6, a deteção do erro de validação de esquema é habilitada por padrão; no entanto, é possível desativá-lo, para que o erro de validação do esquema não seja detetado.
Em aplicativos executados sob o .NET Framework 4.6, mas destinados ao .NET Framework 4.5.2 e versões anteriores, um erro de validação de esquema não é detetado por padrão; no entanto, é possível optar por ele, para que o erro de validação do esquema seja detetado.
Esse comportamento pode ser configurado usando a AppContext classe para definir o valor do System.Xml.IgnoreEmptyKeySequences
switch. Como o valor padrão do switch é false
(sequências de teclas vazias não são ignoradas), os aplicativos destinados ao .NET Framework 4.6 podem desativar o comportamento usando o código a seguir para definir o valor do switch como 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)
Para aplicativos destinados ao .NET Framework 4.5.2 e versões anteriores, como o valor padrão do switch é true
(sequências de teclas vazias são ignoradas), é possível garantir que uma chave composta com uma chave vazia gere um erro de validação de esquema usando o código a seguir para definir o valor do switch como 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)