Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A metódus System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) feltétel nélkül dob egy XmlException a futásidőben. Ha az alkalmazás használja XmlSecureResolver , és megpróbál rajta keresztül feloldani egy XML-erőforrást, a feloldás kivétellel meghiúsul.
Emellett a teljes System.Xml.XmlSecureResolver típus elavult. Az erre a típusra mutató összes hivatkozás SYSLIB0047 figyelmeztetést fog eredményezni a létrehozáskor. Ha hibaként engedélyezte a figyelmeztetéseket, az buildtörést fog okozni, ha az alkalmazás hivatkozik XmlSecureResolverrá.
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);
Előző viselkedés
A .NET-keretrendszerben XmlSecureResolver.GetEntity(Uri, String, Type) létrehoz egy Code Access Security (CAS) tesztkörnyezetet a külső XML-erőforrásfeloldási folyamat korlátozásához. Ha a szabályzatot megsértik, a SecurityException dobódik.
A .NET Core 3.1-ben és a .NET 6-ban XmlSecureResolver.GetEntity(Uri, String, Type) egyáltalán nem korlátozza a külső XML-erőforrások felbontását. A külső erőforrásfeloldás korlátozások nélkül engedélyezett.
Új viselkedés
A .NET 7-től XmlSecureResolver.GetEntity(Uri, String, Type) kezdve feltétel nélkül dob egy XmlException. Nem hoz létre CAS-tesztkörnyezetet, és nem próbálja meg feloldani a külső erőforrást.
Bevezetett verzió
.NET 7
A kompatibilitástörő változás típusa
Ez a módosítás hatással lehet a forráskompatibilitásra és a bináris kompatibilitásra.
A változás oka
Ez a változás javítja a .NET-ökoszisztéma biztonságát. Ez az elavulás a XmlSecureResolver működést a veszélyes meghibásodásról (mindig a megoldást végzi) hibabiztos működésre módosítja (soha nem végez megoldást), amikor a .NET 7-en vagy újabb verziókon fut.
Javasolt művelet
Fontolja meg inkább az újonnan bevezetett statikus tulajdonság XmlResolver.ThrowingResolverhasználatát. Ez a tulajdonság egy olyan példányt XmlResolver biztosít, amely tiltja a külső erőforrásfeloldást.
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;