same server, get url: vbscript msxml3.dll 80004005 unspecified error, or msxml6.dll error '80072ee6' System error: -2147012890

same server, get url: vbscript msxml3.dll 80004005 unspecified error, or msxml6.dll error '80072ee6' System error: -2147012890

获取同一服务器上 asp 页面输出的正确方法是什么?

<%

GetUrl "/route/to/abc/123/"

Function GetUrl(url)
    Set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.3.0")
    objXMLHTTP.open "GET", URL, false
    objXMLHTTP.send()
    If objXMLHTTP.Status = 200 Then
        Response.Write objXMLHTTP.ResponseText
    End if
    Set objXMLHTTP = Nothing
End Function

%>

导致这个讨厌的错误。

msxml3.dll error '80004005'
Unspecified error
/test.asp, line 7

切换到较新的服务器x​​mlhttp

set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")

揭示了一个不同的、更有意义的错误:

msxml6.dll error '80072ee6'
System error: -2147012890.
/test.asp, line 8

哪个google高兴地找到了一个理由,上面写着“不要使用serverXmlHttp连接到同一服务器。(https://support.microsoft.com/en-us/kb/316451)你用什么?文章没有提供很多。

无论如何,很酷,我的错误是有正当理由的。但是,在经典 asp 下,您使用什么连接到同一台服务器来捕获页面的输出?这篇文章 (https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/aa23d158-000a-4ba2-8fe8-99895854d7f0.mspx?mfr=true) 提到如果我正在执行隔离模式,那么该进程将独立于 Web 服务器进程运行并且我无法使用 SSI,我不知道如何首先启用它无论如何放置。反正听起来很恶心。 SSI 在我的应用程序中是 关键,所以我不能考虑它。

我还剩下什么(除了显而易见的:沟 ASP)?生成一个 wscript.shell 命令提示符并从那里拉出它,回显到标准输出?从另一个反射服务器反弹?咕噜

您无法从位于 同一应用程序池 下的 运行 网站请求网页。

A finite number of worker threads (in the Inetinfo.exe or Dllhost.exe process) is available to execute ASP pages. If all of the ASP worker threads send HTTP requests back to the same Inetinfo.exe or Dllhost.exe process on the server from which the requests are sent, the Inetinfo.exe or Dllhost.exe process may deadlock or stop responding (hang), because the pool of worker threads to process the incoming requests will be exhausted. This is by design.

If a single recursive request causes IIS to deadlock, the typical cause is that ASP script debugging is enabled.

解决方案:创建新文件夹,将您的脚本放入该文件夹中。之后在 IIS 中创建新的应用程序池并为此文件夹创建新的应用程序。

如何为某个文件夹创建新的应用程序:

文件夹分配给新应用程序池时的示例:

注意:不要尝试使用第 3 部分 DLL 从同一个应用程序池下载网页。结果将是相同的。使用一些免费的 http 组件进行测试。