Поделиться через


Передача учетных данных для проверки подлинности в XmlResolver при чтении из файла

При разрешении URL-адреса файла, содержащего XML-данные для чтения может оказаться, что доступ к файлу ограничен. Если для доступа к сетевому ресурсу требуется проверка подлинности, можно задать нужные учетные данные с помощью свойства Credentials. Если свойство Credentials не указано, учетным данным присваивается значение null.

Предположим, что учетные данные нужны для проверки подлинности при запросе данных с веб-узла. Если виртуальный веб-каталог разрешает анонимный доступ, свойству не нужно задавать значение. Однако если анонимный доступ к каталогу не разрешен, нужно задать учетные данные. В следующем примере создается экземпляр класса XmlReader, использующий объект XmlUrlResolver с учетными данными по умолчанию для доступа к узлу 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 );

Для различных URI-идентификаторов могут понадобиться различные учетные данные; их можно добавить в кэш учетных данных. Эти учетные данные используются для проверки подлинности на различных URI-идентификаторах ресурсов вне зависимости от первоначального источника XML. В следующем примере показано добавление учетных данных в кэш.

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

См. также

Ссылки

NetworkCredential

CredentialCache

Основные понятия

Разрешение ресурсов с помощью XmlResolver

Другие ресурсы

Разрешение внешних XML-ресурсов, именованных посредством URI