Angeben von Authentifizierungsinformationen für "XmlResolver" beim Lesen aus einer Datei

Bei der Auflösung einer URL in eine Datei, die die zu lesenden XML-Daten enthält, gelten für die Datei möglicherweise Zugriffsbeschränkungen. Wenn für den Zugriff auf eine Netzwerkressource eine Authentifizierung erforderlich ist, geben Sie die erforderlichen Anmeldeinformationen mithilfe der Credentials-Eigenschaft an. Wenn die Credentials-Eigenschaft nicht festgelegt ist, werden die Anmeldeinformationen auf null festgelegt.

Angenommen, beim Anfordern von Daten aus dem Internet sind Anmeldeinformationen für die Authentifizierung erforderlich. Wenn das virtuelle Internetverzeichnis den anonymen Zugriff zulässt, muss diese Eigenschaft für einen anonymen Zugriff nicht festgelegt werden. Wenn das Verzeichnis keinen anonymen Zugriff zulässt, müssen Sie die Anmeldeinformationen angeben. Im folgenden Beispiel wird ein XmlReader erstellt, der einen XmlUrlResolver mit Standardanmeldeinformationen für den Zugriff auf die Website https://localhost/bookstore/inventory.xml verwendet.

' 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 );

Für unterschiedliche URIs können unterschiedliche Anmeldeinformationen bereitgestellt und einem Cache für Anmeldeinformationen hinzugefügt werden. Anhand dieser Anmeldeinformationen wird die Authentifizierung für die unterschiedlichen URIs überprüft, ungeachtet der ursprünglichen Quelle des XML-Codes. Im folgenden Beispiel wird veranschaulicht, wie Anmeldeinformationen einem Cache hinzugefügt werden.

' 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);   

Siehe auch

Referenz

NetworkCredential

CredentialCache

Konzepte

Auflösen von Ressourcen mit dem "XmlResolver"

Weitere Ressourcen

Auflösen von externen mit einem URI benannten XML-Ressourcen