Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Die Methode System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) löst bedingungslos zur Laufzeit ein XmlException . Wenn Ihre Anwendung XmlSecureResolver nutzt und Sie versuchen, eine XML-Ressource darüber aufzulösen, schlägt die Auflösung mit einer Ausnahme fehl.
Darüber hinaus ist der gesamte System.Xml.XmlSecureResolver Typ veraltet. Alle Verweise auf diesen Typ führen zur Buildzeit zu einer SYSLIB0047-Warnung. Wenn Sie die Einstellung aktiviert haben, dass Warnungen als Fehler behandelt werden, wird dies bei einem Verweis Ihrer Anwendung auf XmlSecureResolver einen Build-Abbruch verursachen.
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);
Vorheriges Verhalten
In .NET Framework erstellt XmlSecureResolver.GetEntity(Uri, String, Type) eine CAS-Sandbox (Code Access Security), um den Prozess zur Auflösung externer XML-Ressourcen einzuschränken. Wenn gegen die Richtlinie verstoßen wird, wird eine SecurityException ausgelöst.
In .NET Core 3.1 und .NET 6 XmlSecureResolver.GetEntity(Uri, String, Type) schränkt die externe XML-Ressourcenauflösung überhaupt nicht ein. Die Auflösung externer Ressourcen darf ohne Einschränkungen fortgesetzt werden.
Neues Verhalten
Ab .NET 7 löst XmlSecureResolver.GetEntity(Uri, String, Type) bedingungslos eine XmlException aus. Es erstellt keine CAS-Sandbox und versucht nicht, die externe Ressource aufzulösen.
Eingeführte Version
.NET 7
Art der einschneidenden Änderung
Diese Änderung kann sich auf Quellkompatibilität und binäre Kompatibilität auswirken.
Grund für Änderung
Diese Änderung verbessert die Sicherheit des .NET-Ökosystems. Diese Veraltung verschiebt das Verhalten von XmlSecureResolver bei Ausführung unter .NET 7 oder höher von ausfallgefährdet (immer Auflösung ausführen) zu ausfallsicher (nie Auflösung ausführen).
Empfohlene Aktion
Verwenden Sie stattdessen die neu eingeführte statische Eigenschaft XmlResolver.ThrowingResolver. Diese Eigenschaft stellt eine XmlResolver-Instanz bereit, die das Auflösen externer XML-Ressourcen verbietet.
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;