メソッド System.Xml.XmlSecureResolver.GetEntity(Uri, String, Type) は実行時に無条件で XmlException をスローします。 アプリケーションが XmlSecureResolver を利用し、それを介して XML リソースを解決しようとすると、解決は例外で失敗します。
さらに、 System.Xml.XmlSecureResolver 型全体が古くなっています。 この型への参照はすべて、ビルド時に SYSLIB0047 警告になります。 警告をエラーとして有効にした場合、アプリケーションが 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);
以前の動作
.NET Framework では、 XmlSecureResolver.GetEntity(Uri, String, Type) は外部 XML リソース解決プロセスを制限するコード アクセス セキュリティ (CAS) サンドボックスを構築します。 ポリシーに違反した場合は SecurityException がスローされます。
.NET Core 3.1 および .NET 6 では、 XmlSecureResolver.GetEntity(Uri, String, Type) は外部 XML リソース解決をまったく制限しません。 外部リソースの解決は、制限なしで続行できます。
新しい動作
.NET 7 以降、XmlSecureResolver.GetEntity(Uri, String, Type) からは無条件に XmlException がスローされます。 CAS サンドボックスは構築されず、外部リソースの解決も試みません。
導入されたバージョン
.NET 7
破壊的変更の種類
この変更は、ソースの互換性とバイナリの互換性に影響する可能性があります。
変更の理由
この変更により、.NET エコシステムのセキュリティが向上します。 この非推奨化により、XmlSecureResolver の動作は、.NET 7 以降で実行されている場合に、フェールデンジャラス (常に解決を実行) からフェールセーフ (決して解決を実行しない) に移行します。
推奨されるアクション
代わりに、新しく導入された静的プロパティ XmlResolver.ThrowingResolverを使用することを検討してください。 このプロパティは、外部リソース解決を禁止する XmlResolver インスタンスを提供します。
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;
影響を受ける API
.NET