Partilhar via


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)

Consulte também