Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis 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;