Поэтому я пишу веб-приложение для использования в моей организации. Приложение требует, чтобы оно знало, кто является текущим пользователем. Это делается путем вызова функции 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 независимо от метода аутентификации.
Любая помощь будет оценена по достоинству. Пока могу предложить только два решения:
а) создать новый веб-сайт, который ПРОСТО получает текущее имя пользователя и каким-то образом передает его обратно в мой веб-сайт для чтения XML.
б) открыть безопасность всей системы для «всех», что работает, но наш отдел информационных технологий не будет заботиться об этом.
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Вот мой исходный код, который вызывает ошибку отказа в доступе:
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") )
Еще раз большое спасибо thomask.
http://currentwebserver/currentsubweb/nameofxml.xml
с нужными параметрами безопасности (встроенная проверка подлинности Windows)? - person Filburt   schedule 15.04.2010