Share via


Cómo proporcionar credenciales de autenticación a XmlResolver al leer desde un archivo

Cuando se resuelve una URL en un archivo que contiene los datos XML que se van a leer, el archivo puede tener una directiva de acceso restringido. Si se necesita autenticación para obtener acceso a un recurso de red, utilice la propiedad Credentials para especificar las credenciales necesarias. Si no se establece la propiedad Credentials, las credenciales se establecen en null.

Por ejemplo, suponga que se necesitan credenciales para solicitar datos web para realizar la autenticación. Si el directorio virtual web permite acceso anónimo, no es necesario establecer la propiedad para el acceso anónimo. Sin embargo, si el directorio no permite acceso anónimo, tendrá que proporcionar credenciales. En el siguiente ejemplo se crea un XmlReader que utiliza un XmlUrlResolver con credenciales predeterminadas para tener acceso al sitio 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 );

Se pueden proporcionar diferentes credenciales para diferentes identificadores URI y agregarlas a una caché de credenciales. Estas credenciales se utilizan para comprobar la autenticación de los diferentes identificadores URI del origen inicial del XML. En el siguiente ejemplo se muestra cómo se agregan credenciales a una caché.

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

Vea también

Referencia

NetworkCredential

CredentialCache

Conceptos

Resolución de recursos con XmlResolver

Otros recursos

Resolver recursos XML externos nombrados por un identificador URI