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 è necessario eseguire l'autenticazione per accedere a una risorsa di rete, utilizzare la proprietà XmlResolver.Credentials per specificare le credenziali necessarie. Se non si imposta la proprietà XmlResolver.Credentials, le credenziali verranno 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 che segue viene illustrata l'impostazione delle credenziali in XmlTextReader per accedere alla directory http://localhost/bookstore/inventory.xml.

Dim rdr As New XmlTextReader("http://localhost/bookstore/book.xml")
rdr.XmlResolver.Credentials = CredentialCache.DefaultCredentials
Dim doc as new XmlDocument()
doc.Load(rdr)
[C#]
XmlTextReader rdr = new XmlTextReader("http://localhost/bookstore/books.xml");
rdr.XmlResolver.Credentials = CredentialCache.DefaultCredentials;
XmlDocument doc = new XmlDocument();
doc.Load(rdr);

È 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 che segue viene illustrato come aggiungere le credenziali a una cache.

Dim myCred As New NetworkCredential(UserName, SecurelyStoredPassword, domain)
Dim myCache As New CredentialCache()
myCache.Add(New Uri("www.contoso.com"), "Basic", myCred)
myCache.Add(New Uri("app.contoso.com"), "Basic", myCred)
reader.XmlResolver.Credentials = myCache
   ...
[C#]
NetworkCredential myCred = new NetworkCredential(UserName, SecurelyStoredPassword, domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("www.contoso.com"), "Basic", myCred); 
myCache.Add(new Uri("app.contoso.com"), "Basic", myCred);
reader.XmlResolver.Credentials = myCache;
   ...

XmlDocument prevede una proprietà XmlResolver utilizzata per impostare un XmlResolver con le credenziali corrette per l'accesso alle risorse esterne. Per ulteriori informazioni, vedere Proprietà XmlDocument.XmlResolver. Per informazioni sulla classe NetworkCredential, vedere Classe NetworkCredential.

Per informazioni sulla creazione di credenziali per accedere a servizi Web XML, vedere Protezione di servizi Web XML creati con ASP.NET.

Vedere anche

Risoluzione di risorse XML esterne specificate da un URI | Risoluzione delle risorse mediante XmlResolver | Creazione di un risolutore personalizzato