与服务器的连接异常终止XMLHttpRequest。

10

我有一个ASP页面test1.asp,它与这个Web服务在同一服务器上(不同的网站)。问题是当我尝试运行这段代码时:

sUrl = "http://chat.xxxxx.com/UCWebServices/Chat.asmx/GetChatQueueByAddress?queueAddress=SALESCHAT"

result = HTTPPost(sUrl)

response.Write result

Function HTTPPost(sUrl)
  set oHTTP = CreateObject("Msxml2.ServerXMLHTTP")
  oHTTP.open "GET", sUrl,false
  oHTTP.send <-- it fails here <-- it fails here <-- it fails here <--
  if oHTTP.Status = 200 Then
     HTTPPost oHTTP.responseText
  End if
 End Function
%>

我遇到了以下错误

msxml3.dll 错误 '80072efe'

与服务器的连接异常终止

我在谷歌上搜寻这个问题,本以为这是一些小麻烦,但是我遇到了些问题。很难解决。

如果我们从其他任何地方运行同样的页面,那么它可以正常工作。

有任何想法吗?

5个回答

8

这个错误代码是ERROR_INTERNET_CONNECTION_ABORTED。最常见的原因是防火墙或反病毒软件干扰连接,代理破坏了连接数据。也可能是由于名称解析问题引起--例如,如果主机名在本地解析为127.0.0.1,而Web服务器仅绑定到公共IP地址。


1

对于某些服务器,需要设置content-length头才能正确执行HTTP POST请求。在我们的情况下(使用serverXMLHttp),需要这样做:

    xmlhttp.Open "POST", URL , false
    xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    xmlhttp.setRequestHeader "Content-Length", Len(postdata)

1
另一种可能性是,远程服务器可能会根据浏览器代理字符串进行过滤(和丢弃)请求,以防止程序化的抓取。
当您在常规浏览器中请求该URL时会发生什么?

1

回答一个旧的帖子,因为它是谷歌搜索结果中的第一个。

我刚遇到了这个问题。原来是我POST了一个空字符串:

myString = FunctionThatWasReturningEmptyString()
set oHTTP = CreateObject("Msxml2.ServerXMLHTTP")
oHTTP.open "GET", sUrl, false
oHTTP.send myString

当我修复了函数,使其返回一个空的XML集而不是空字符串时,我的错误消失了。

0
当我遇到这个错误时,事件日志显示w3wp.exe(IIS应用程序池)已崩溃。
使用Visual Studio,我打开了事件查看器提到的内存转储文件,“异常信息”中有消息“线程用尽了其堆栈。”
结果发现,代码出现了StackOverflowException,导致应用程序池崩溃。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接