ファイルからの読み取り時の XmlResolver への認証資格情報の提供

更新 : November 2007

読み取り対象の XML データが含まれているファイルを指す URL を解決するときに、そのファイルのアクセス ポリシーが制限されている場合があります。ネットワーク リソースにアクセスするために認証が必要な場合は、Credentials プロパティを使用して必要な資格情報を指定します。Credentials プロパティが設定されていない場合、資格情報は null に設定されます。

たとえば、Web にデータを要求するときに、認証のための資格情報が必要であるとします。Web の仮想ディレクトリで匿名アクセスが許可されている場合は、このプロパティを匿名アクセス用に設定する必要はありません。ただし、ディレクトリで匿名アクセスが許可されていない場合は、資格情報を指定する必要があります。次の例では、既定の資格情報で XmlUrlResolver を使用する XmlReader を作成して、https://localhost/bookstore/inventory.xml サイトにアクセスします。

' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("https://ServerName/data/books.xml", settings)
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("https://ServerName/data/books.xml", settings);
// Create a resolver with default credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = System::Net::CredentialCache::DefaultCredentials;

 // Set the reader settings object to use the resolver.
 settings->XmlResolver = resolver;

// Create the XmlReader object.
XmlReader^ reader = XmlReader::Create( L"https://ServerName/data/books.xml", settings );

URI ごとに異なる資格情報を指定して、資格情報キャッシュに追加できます。これらの資格情報は、XML の出所には関係なく、異なる URI について認証をチェックするために使用されます。キャッシュへの資格情報の追加方法を次の例に示します。

' Create the credentials.
Dim myCred As NetworkCredential = New NetworkCredential(UserName,SecurelyStoredPassword,Domain)
Dim myCache As CredentialCache = New CredentialCache()
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred)
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred)

' Set the credentials on the XmlUrlResolver object.
Dim resolver As XmlUrlResolver = New XmlUrlResolver()
resolver.Credentials = myCache

' Compile the style sheet.
Dim xslt As XslCompiledTransform = New XslCompiledTransform()
xslt.Load("https://serverName/data/xsl/order.xsl", XsltSettings.Default, resolver)

// Create the credentials.
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred); 
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);

// Set the credentials on the XmlUrlResolver object.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;

// Compile the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("https://serverName/data/xsl/order.xsl",XsltSettings.Default, resolver);   

参照

概念

XmlResolver を使用したリソースの解決

参照

NetworkCredential

CredentialCache

その他の技術情報

URI 名を持つ外部 XML リソースの解決

セキュリティと System.Xml アプリケーション