Implementazione delle credenziali di autenticazione in XmlResolver quando si esegue la lettura da un file

Quando si risolve l'URL del file che contiene i dati XML da leggere, il file potrebbe avere criteri di accesso con restrizioni. Se per accedere a una determinata risorsa di rete è necessaria l'autenticazione, utilizzare la proprietà Credentials per specificare le credenziali richieste. Se la proprietà Credentials non è impostata, le credenziali saranno impostate su null.

Si supponga, ad esempio, che siano necessarie le credenziali quando si richiedono dati dal Web per ragioni di autenticazione. Se è consentito l'accesso anonimo alla directory virtuale sul Web, questa proprietà non dovrà essere impostata per l'accesso anonimo. Se tuttavia la directory non consente l'accesso anonimo, sarà necessario specificare le credenziali. Nell'esempio seguente viene creato un tipo XmlReader che utilizza un tipo XmlUrlResolver con credenziali predefinite per accedere al sito Web 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 );

È possibile fornire credenziali diverse per URL diversi da aggiungere a una cache di credenziali. Queste credenziali sono utilizzate per verificare l'autenticazione dei diversi URI, indipendentemente dall'origine dell'XML. Nell'esempio seguente viene illustrato come aggiungere le credenziali a una cache.

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

Vedere anche

Riferimenti

NetworkCredential

CredentialCache

Concetti

Risoluzione delle risorse mediante XmlResolver

Altre risorse

Risoluzione di risorse XML esterne specificate da un URI