Compartilhar via


Mitigação: validação de esquema XML

No .NET Framework 4.6, a validação de esquema XSD detectará 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 do esquema será esperado se xsd:unique for violado usando uma chave composta com uma chave vazia.

Atenuação

Se um erro de validação do esquema for detectado se uma chave composta tiver uma chave vazia, é um recurso configurável:

  • Começando com os aplicativos que se destinam ao .NET Framework 4.6, a detecção do erro de validação do esquema é habilitada por padrão; no entanto, é possível recusá-la para que o erro de validação do esquema não seja detectado.

  • Em aplicativos que são executados no .NET Framework 4.6, mas se destinam ao .NET Framework 4.5.2 e versões anteriores, um erro de validação do esquema não é detectado por padrão; no entanto, é possível aceitá-lo para que o erro de validação do esquema seja detectado.

Esse comportamento pode ser configurado usando a classe AppContext para definir o valor da opção System.Xml.IgnoreEmptyKeySequences. Como o valor padrão da opção é false (sequências de chaves vazias não são ignoradas), os aplicativos que se destinam ao .NET Framework 4.6 podem recusar o comportamento usando o seguinte código para definir o valor da opção 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 que se destinam ao .NET Framework 4.5.2 e às versões anteriores, porque o valor padrão da opção é true (sequências de chaves vazias são ignoradas), é possível garantir que uma chave composta com uma chave vazia gere um erro de validação do esquema usando o código a seguir para definir o valor da opção 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)

Confira também