XmlSecureResolver je zastaralý
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 upozornění povolili jako chyby, způsobí to přerušení sestavení, pokud vaše aplikace odkazuje 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 run time.
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 CAS (Code Access Security), který omezí proces překladu externích prostředků XML. Pokud dojde k porušení zásad, SecurityException vyvolá se výjimka.
V .NET Core 3.1 a .NET 6 XmlSecureResolver.GetEntity(Uri, String, Type) vůbec neomezuje překlad externích prostředků XML. Překlad 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 sandbox CAS a nepokouší se přeložit externí prostředek.
Zavedená verze
.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. Tato obsoletion přesouvá chování XmlSecureResolver z chybově nebezpečné (vždy provádět řešení) na selhání -bezpečné (nikdy neprovádějte řešení) při spuštění 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á zakáže překlad 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;