neo*_*key 8 serverxmlhttp asp-classic
我们刚刚转移到具有Windows 2008和SQL Server 2008的新专用服务器.我正在尝试使用同一服务器访问ASP页面Server.CreateObject("MSXML2.ServerXMLHTTP").
在我们之前的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
Run Code Online (Sandbox Code Playgroud)
代码很简单,但是我收到以下错误:
msxml3.dll error '80072ee2'
The operation timed out
/handle404.asp, line 291
Run Code Online (Sandbox Code Playgroud)
第291行引用oXMLHttp.Send()行.
我可以使用替代代码吗?我在服务器上的其他位置使用脚本访问其他服务器上的文件并且它们正常工作,但是对我们服务器上的文件的任何访问都不起作用.
是否有一种替代方法可以让我在浏览器中保持URL完好无损?此人可以在他们的浏览器中写入URL:http://www.example.com/hello该文件不存在,但我有一个404处理程序,然后将用户指向正确的路径,而不更改浏览器URL,这是必不可少的对于我们的SEO评级.
Che*_*vel 12
Microsoft发布了一篇名为" INFO:不向同一服务器发送ServerXMLHTTP或WinHTTP请求 "的知识库文章
如果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.
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);
}
}
Run Code Online (Sandbox Code Playgroud)
祝你好运!