Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El método System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) lanza incondicionalmente una excepción de tipo XmlException en tiempo de ejecución. Si su aplicación utiliza XmlSecureResolver e intenta resolver un recurso XML a través de él, se producirá un error en la resolución con una excepción.
Además, la totalidad del tipo System.Xml.XmlSecureResolver está obsoleta. Todas las referencias a este tipo producirán una advertencia SYSLIB0047 en tiempo de compilación. Si ha habilitado advertencias como errores, esto provocará una interrupción de compilación si la aplicación hace referencia 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);
Comportamiento anterior
En .NET Framework, XmlSecureResolver.GetEntity(Uri, String, Type) crea un espacio aislado de seguridad de acceso a código (CAS) para restringir el proceso de resolución de recursos XML externo. Si se infringe la directiva, se produce una excepción SecurityException.
En .NET Core 3.1 y .NET 6, XmlSecureResolver.GetEntity(Uri, String, Type) no restringe la resolución de recursos XML externos. La resolución de recursos externos puede continuar sin limitaciones.
Nuevo comportamiento
A partir de .NET 7, XmlSecureResolver.GetEntity(Uri, String, Type) lanza incondicionalmente un XmlException. No construye un espacio aislado CAS y no intenta resolver el recurso externo.
Versión introducida
.NET 7
Tipo de cambio disruptivo
Este cambio puede afectar a la compatibilidad de origen y la compatibilidad binaria.
Motivo del cambio
Este cambio mejora la seguridad del ecosistema de .NET. Esta obsolescencia cambia el comportamiento de XmlSecureResolver de un error peligroso (siempre realiza una resolución) a una resolución con error (nunca realiza la resolución) cuando se ejecuta en .NET 7 o una versión posterior.
Acción recomendada
Considere la posibilidad de usar en su lugar la propiedad XmlResolver.ThrowingResolverestática recién introducida . Esta propiedad proporciona una XmlResolver instancia que prohíbe la resolución 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;