我似乎无法使用 ASP(经典)、IIS6 加载 XML 文档。里面有详细信息

发布于 2024-08-28 08:28:07 字数 1822 浏览 2 评论 0原文

因此,我正在编写一个在我的组织内使用的 Web 应用程序。应用程序要求它知道当前用户是谁。这是通过调用 Request.ServerVariables("AUTH_USER") 函数来完成的,只要在 IIS 中为此子网站禁用(未选中)“匿名访问”并且启用(选中)“集成 Windows 身份验证”,该函数就可以正常工作。

不幸的是,通过这样做,当我点击 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)创建一个新的子网,它只获取当前用户名并以某种方式将其传递回我的 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") )

再次非常感谢 thomask。

So I am writing a web application for use within my organization. The application requires that it know who the current user is. This is done by calling the Request.ServerVariables("AUTH_USER") function, which works great as long as 'Anonymous Access' is disabled (unchecked) and 'Integrated Windows Authentication' is enabled (checked) within IIS for this subweb.

Unfortunately by doing this I get an 'Access Denied' error when I hit the load method of the XML DOM.

Example code:

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!

I've looked everywhere and cannot find a solution. I should be able to load an XML file into the DOM regardless of the authentication method.

Any help would be appreciated. So far the only two solutions I can come up with are:

a) create a new subweb that JUST gets the current user name and somehow passes it back to my XML reading subweb.

b) open up security on the entire system to 'Everyone', which works but our IS department wouldn't care for that.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Here was my original code, which cause the access denied error:

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") )

Now, here is my new code thanks to 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") )

Again thank you very much thomask.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

窝囊感情。 2024-09-04 08:28:07

您可能想查看 MSXML2.ServerXMLHTTP(.3.0 - 6.0) 来指定用户凭据。如果Content-Type配置正确,ServerXMLHTTP应该在responseXml属性中为您提供DOMDocument。

Dim http
Set http = CreateObject("MSXML2.ServerXMLHTTP.3.0")

http.Open("GET", "http://currentwebserver/currentsubweb/nameofxml.xml", false, "user", "pass")
http.Send()

You might wanna look at MSXML2.ServerXMLHTTP(.3.0 - 6.0) to specify the user credentials. If the Content-Type is configured correctly, ServerXMLHTTP should give you the DOMDocument in the responseXml property.

Dim http
Set http = CreateObject("MSXML2.ServerXMLHTTP.3.0")

http.Open("GET", "http://currentwebserver/currentsubweb/nameofxml.xml", false, "user", "pass")
http.Send()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文