Итак, я пишу веб-приложение для использования в моей организации. Приложение требует, чтобы оно знало, кто является текущим пользователем. Это делается путем вызова функции Request.ServerVariables («AUTH_USER»), которая прекрасно работает, если «Анонимный доступ» отключен (не отмечен) и «Встроенная проверка подлинности Windows» включена (проверена) в IIS для этого веб-каталога. *
К сожалению, делая это, я получаю сообщение об ошибке «Отказано в доступе», когда сталкиваюсь с методом загрузки XML DOM.
Пример кода:
dim urlToXmlFile
urlToXmlFile = "http://currentwebserver/currentsubweb/nameofxml.xml"
dim xmlDom
set xmlDom = Server.CreateObject("MSXML2.DOMDocument")
xmlDom.async = false
xmlDom.load( urlToXmlFile ) ' <-- this is where I get the error!
Я искал везде и не могу найти решение. Я должен иметь возможность загружать XML-файл в DOM независимо от метода аутентификации.
Любая помощь будет оценена. Пока что я могу предложить только два решения:
a) создайте новый веб-каталог, который JUST получает текущее имя пользователя и каким-то образом передает его обратно в мой XML-веб-каталог для чтения.
b) открыть защиту для всей системы для «Все», что работает, но наш отдел информационных технологий не позаботится об этом.
= - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - = - =
Вот мой оригинальный код, из-за которого отказано в доступе:
dim urlToXml
urlToXml = "http://someserver/somesomeweb/nameofxml.xml"
dim xmlDom
set xmlDom = Server.CreateObject("MSXML2.DOMDocument")
xmlDom.loadXML( urlToXml )
dim xsl
set xsl = Server.CreateObject("MSXML2.DOMDocument")
xsl.async = false
xsl.load(server.MapPath("somexsl.xsl"))
Response.Write( xmlDom.transformNode(xsl) )
xmlDom.save( server.MapPath("accounting/somexml.xml") )
Теперь вот мой новый код благодаря thomask:
dim urlToXml
urlToXml = "http://someserver/somesomeweb/nameofxml.xml"
set http = CreateObject("MSXML2.ServerXMLHTTP.3.0")
http.Open "GET", urlToXml, false
http.Send()
dim xmlDom
set xmlDom = Server.CreateObject("MSXML2.DOMDocument")
xmlDom.loadXML( http.responseXML.xml )
dim xsl
set xsl = Server.CreateObject("MSXML2.DOMDocument")
xsl.async = false
xsl.load(server.MapPath("somexsl.xsl"))
Response.Write( xmlDom.transformNode(xsl) )
xmlDom.save( server.MapPath("newxml.xml") )
Еще раз большое спасибо Томаска.