Передача учетных данных для проверки подлинности в 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);
См. также
Ссылки
Основные понятия
Разрешение ресурсов с помощью XmlResolver
Другие ресурсы
Разрешение внешних XML-ресурсов, именованных посредством URI