Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O método System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) lança incondicionalmente um XmlException em tempo de execução. Se o aplicativo utilizar XmlSecureResolver e você tentar resolver um recurso XML por meio dele, a resolução falhará com uma exceção.
Além disso, todo o tipo System.Xml.XmlSecureResolver é obsoleto. Todas as referências a esse tipo resultarão em um aviso SYSLIB0047 durante a construção. Se você tiver habilitado avisos como erros, isso causará uma quebra de build se o aplicativo fizer referência a XmlSecureResolver.
using System.Xml;
// Compiler warning SYSLIB0047: XmlSecureResolver type is obsolete.
XmlResolver resolver = new XmlSecureResolver(
resolver: new XmlUrlResolver(),
securityUrl: "https://www.example.com/");
// Call to XmlSecureResolver.GetEntity below throws XmlException at runtime.
object entity = resolver.GetEntity(
absoluteUri: new Uri("https://www.example.com/some-entity"),
role: null,
ofObjectToReturn: null);
Comportamento anterior
No .NET Framework, XmlSecureResolver.GetEntity(Uri, String, Type) constrói um sandbox CAS (Code Access Security) para restringir o processo de resolução de recursos XML externos. Se a política for violada, uma SecurityException será lançada.
No .NET Core 3.1 e no .NET 6, XmlSecureResolver.GetEntity(Uri, String, Type) não restringe a resolução de recursos XML externos. Está permitido que a resolução de recursos externos prossiga sem limitações.
Novo comportamento
A partir do .NET 7, XmlSecureResolver.GetEntity(Uri, String, Type) lança incondicionalmente um XmlException. Ele não constrói um sandbox CAS e não tenta resolver o recurso externo.
Versão introduzida
.NET 7
Tipo de mudança disruptiva
Essa alteração pode afetar a compatibilidade do código-fonte e a compatibilidade binária.
Motivo da alteração
Essa alteração melhora a segurança do ecossistema do .NET. Essa obsolescência move o comportamento de XmlSecureResolver de fail-dangerous (sempre executar resolução) para fail-safe (nunca executar resolução) ao executar no .NET 7 ou versões posteriores.
Ação recomendada
Considere, em vez disso, usar a propriedade XmlResolver.ThrowingResolverestática recém-introduzida. Essa propriedade fornece uma instância XmlResolver que impede a resolução de recursos externos.
using System.Xml;
// BAD: Do not use XmlSecureResolver.
// XmlResolver resolver = new XmlSecureResolver(
// resolver: new XmlUrlResolver(),
// securityUrl: "https://www.example.com/");
// GOOD: Use XmlResolver.ThrowingResolver instead.
XmlResolver resolver = XmlResolver.ThrowingResolver;