Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Metoda System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) bezpodmínečně vyvolá XmlException za běhu. Pokud vaše aplikace využívá XmlSecureResolver prostředek XML a pokusíte se ho vyřešit, řešení selže s výjimkou.
Kromě toho je celý System.Xml.XmlSecureResolver typ zastaralý. Všechny odkazy na tento typ budou mít za následek upozornění SYSLIB0047 v době sestavení. Pokud jste povolili varování jako chyby, dojde k přerušení sestavení, pokud vaše aplikace odkazuje na 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);
Předchozí chování
V rozhraní .NET Framework XmlSecureResolver.GetEntity(Uri, String, Type) vytvoří sandbox (Code Access Security, CAS), který omezuje proces řešení externích prostředků XML. Pokud dojde k porušení zásad, je vyvolána výjimka SecurityException.
cs-CZ: V .NET Core 3.1 a .NET 6 XmlSecureResolver.GetEntity(Uri, String, Type) vůbec neomezuje řešení externích XML zdrojů. Řešení externích prostředků může pokračovat bez omezení.
Nové chování
Počínaje rozhraním .NET 7, XmlSecureResolver.GetEntity(Uri, String, Type) bezpodmínečně vyvolá výjimku XmlException. Nekonstruuje prostředí sandbox CAS a nepokouší se zpracovat externí prostředek.
Verze byla představena
.NET 7
Typ zásadní změny
Tato změna může ovlivnit kompatibilitu zdroje a binární kompatibilitu.
Důvod změny
Tato změna zlepšuje zabezpečení ekosystému .NET. Toto zastarání mění chování XmlSecureResolver z nebezpečné při selhání (vždy provádět určování) na bezpečné při selhání (nikdy neprovádějte určování), když běží na .NET 7 nebo novější.
Doporučená akce
Zvažte místo toho použití nově zavedené statické vlastnosti XmlResolver.ThrowingResolver. Tato vlastnost poskytuje XmlResolver instanci, která zamezí vyřešení externích prostředků.
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;