Partager via


Fourniture d'informations d'authentification à XmlResolver lors de la lecture à partir d'un fichier

Lors de la résolution d'une URL en un fichier contenant les données XML à lire, le fichier peut posséder une stratégie d'accès limitée. Si une authentification est requise pour accéder à une ressource réseau, utilisez la propriété Credentials pour spécifier les informations d'identification nécessaires. Si la propriété Credentials n'est pas définie, les informations d'identification sont définies sur null.

Par exemple, supposons que des informations d'identification soient nécessaires à des fins d'authentification lors de la demande de données sur le Web. Si le répertoire Web virtuel autorise un accès anonyme, il n'est pas nécessaire de définir la propriété. Toutefois, si le répertoire n'autorise pas un accès anonyme, vous devez fournir des informations d'identification. L'exemple suivant crée un objet XmlReader qui utilise un objet XmlUrlResolver avec des informations d'identification par défaut pour accéder au site 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 );

Différentes informations d'identification peuvent être fournies à différents URI et ajoutés à un cache d'informations d'identification. Ces informations d'identification permettent de vérifier l'authentification vis-à-vis des différents URI, quelle que soit la source initiale du XML. L'exemple suivant illustre l'ajout d'informations d'identification à un 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);   

Voir aussi

Référence

NetworkCredential

CredentialCache

Concepts

Résolution de ressources à l'aide de XmlResolver

Autres ressources

Résolution de ressources XML externes nommées par un URI

Sécurité et applications system.xml