Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De methode System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) gooit onvoorwaardelijk een XmlException tijdens de uitvoering. Als uw toepassing gebruikmaakt van XmlSecureResolver en u probeert een XML-resource ermee op te lossen, zal de oplossing mislukken met een uitzondering.
Daarnaast is het hele System.Xml.XmlSecureResolver type verouderd. Alle verwijzingen naar dit type leiden tot een SYSLIB0047 waarschuwing tijdens de build. Als u waarschuwingen als fouten behandelt, veroorzaakt dit een onderbreking in het bouwen als uw toepassing verwijst naar 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);
Vorig gedrag
In .NET Framework XmlSecureResolver.GetEntity(Uri, String, Type) maakt u een CAS-sandbox (Code Access Security) om het externe XML-resourceomzettingsproces te beperken. Als het beleid wordt geschonden, wordt er een SecurityException gegenereerd.
In .NET Core 3.1 en .NET 6 wordt XmlSecureResolver.GetEntity(Uri, String, Type) de resolutie van externe XML-resources helemaal niet beperkt. Externe resourceomzetting mag zonder beperkingen worden voortgezet.
Nieuw gedrag
Vanaf .NET 7 werpt XmlSecureResolver.GetEntity(Uri, String, Type) onvoorwaardelijk een XmlException. Er wordt geen CAS-sandbox gemaakt en wordt niet geprobeerd de externe resource op te lossen.
Geïntroduceerde versie
.NET 7
Type van brekende verandering
Deze wijziging kan van invloed zijn op de broncompatibiliteit en binaire compatibiliteit.
Reden voor wijziging
Deze wijziging verbetert de beveiliging van het .NET-ecosysteem. Met deze veroudering wordt het gedrag van XmlSecureResolver gewijzigd van fail-dangerous (altijd resolutie uitvoeren) naar fail-safe (nooit resolutie uitvoeren) bij gebruik van .NET 7 of later.
Aanbevolen actie
Overweeg in plaats daarvan de zojuist geïntroduceerde statische eigenschap XmlResolver.ThrowingResolverte gebruiken. Deze eigenschap biedt een XmlResolver exemplaar dat externe bronresolutie verbiedt.
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;