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)