【问题标题】:msxml3.dll error '80072ee2' in ASP PageASP 页中的 msxml3.dll 错误“80072ee2”
【发布时间】:2011-04-05 23:21:54
【问题描述】:

我们刚刚搬到了一个新的专用服务器,该服务器具有 Windows 2008 和 SQL Server 2008。我正在尝试使用 Server.CreateObject("MSXML2.ServerXMLHTTP") 访问同一服务器上的 ASP 页面。

在我们之前的 2003 服务器上,这可以正常工作,但是对于新的 2008 服务器,操作只是超时。

代码如下:

strURL = "http://www.storeboard.com/profile/profile_view.asp?MemberID=" & MemberID & "&sid=" & cSession.SessionID
Set oXMLHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oXMLHttp.open "GET", strURL, false
oXMLHttp.send()
IF oXMLHttp.status = 200 THEN 
  strOut = oXMLHttp.responseText
ELSE
  strOut  = "Could not get XML data."
END IF
Set oXMLHttp = nothing

代码很简单,但出现以下错误:

msxml3.dll error '80072ee2'

The operation timed out

/handle404.asp, line 291 

第 291 行是指 oXMLHttp.Send() 行。

我可以使用其他代码吗?我在服务器上的其他地方使用脚本来访问其他服务器上的文件,它们可以正常工作,但是对我们服务器上文件的任何访问都不起作用。

是否有其他方法可以让我在浏览器中保持 URL 不变?该人可以在他们的浏览器中写入 URL:http://www.example.com/hello 该文件不存在,但我有一个 404 处理程序,该处理程序随后将用户指向正确的路径,而无需更改浏览器 URL,这对于我们的 SEO 评级至关重要。

【问题讨论】:

    标签: asp-classic serverxmlhttp


    【解决方案1】:

    微软发表了一篇题为INFO: Do Not Send ServerXMLHTTP or WinHTTP Requests to the Same Server的知识库文章

    如果 ServerXMLHTTP 或 WinHTTP 组件必须向 同一服务器上的另一个 ASP,目标 ASP 必须位于 不同的虚拟目录并设置为高度隔离运行。避免 使用 ServerXMLHTTP 或 WinHTTP 向 ASP 发送请求 位于同一虚拟目录中。

    ...

    有限数量的工作线程(在 Inetinfo.exe 或 Dllhost.exe 进程)可用于执行 ASP 页。如果所有的 ASP 工作者 线程将 HTTP 请求发送回相同的 Inetinfo.exe 或 发送请求的服务器上的 Dllhost.exe 进程, Inetinfo.exe 或 Dllhost.exe 进程可能会死锁或停止 响应(挂起),因为要处理的工作线程池 传入的请求将被耗尽。这是设计使然。

    就替代方案而言,这取决于您在收到回复后如何处理。如果脚本的全部目的是将请求转发到 profile_view.asp,您也许可以改用Server.Transfer

    【讨论】:

      【解决方案2】:

      我也有同样的问题。在我的情况下,我试图发出的网络请求是一个内部站点 URL(在同一个应用程序池中)。启用服务器端调试后,asp 应用程序池似乎仅限于单个工作线程。通过禁用此功能,可以处理请求。

      【讨论】:

        【解决方案3】:

        msxml3.dll 已经很老了。它与 Internet Explorer 6 一起分发,以便您大致了解一下。

        能否请人在服务器上安装更高版本?

        http://support.microsoft.com/kb/269238 为您提供版本列表,以发送给负责服务器的任何人。

        如果问题真的归结为超时,您可以考虑关闭 ASP 缓冲。 (这基于一个猜测,即如果服务器对象开始接收响应,它将在超时前推迟。

        或者你可以尝试在客户端处理值,下面是我编写的一些代码中的一个函数......

        function getDets(RateID) {
            var xmlHttp;
            try {
                xmlHttp=new XMLHttpRequest();    // Firefox, Opera 8.0+, Safari
            }
            catch (e) {
                try {
                // Internet Explorer
                xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                }
                catch (e) {
                    try {
                    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    catch (e) {
                        alert("Your browser does not support AJAX!");
                        return false;
                    }
                }
            }
            xmlHttp.onreadystatechange=function()
            {
                if(xmlHttp.readyState==4) {
                var str;
                var newStr;
                str=xmlHttp.responseText
                newStr=str.split("|");
                window.document.all.OR2.style.display="block";
                window.document.all.OR3.style.display="block";    
                window.document.OvertimeRates.Description.value=newStr[0];
                window.document.OvertimeRates.Factor.value=newStr[1];
                }
            }
            if (RateID==0) {
                window.document.OvertimeRates.Description.value="";
                window.document.OvertimeRates.Factor.value="";
            }
            else {
                xmlHttp.open("GET","GetOvertimeRate.asp?RateID="+RateID,true);
                xmlHttp.send(null);
            }
        }
        

        祝你好运!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多