【问题标题】:Classic ASP routine calling a page on same server经典 ASP 例程调用同一服务器上的页面
【发布时间】:2018-12-17 00:13:56
【问题描述】:

我正在将旧的 ASP 应用程序从 Windows Server 2012R2 移动到新的 Windows Server 2016 Standard Edition: 旧服务器使用 IIS 8,新服务器使用 IIS 10

这个应用程序有一些例程可以调用 MSXML2.ServerXMLHTTP.6.0 调用托管在同一服务器上的页面:

问题是这个例程在旧服务器上有效,但在新服务器上无效

我构建了这个小程序来进行测试

<%
  Dim xmlhttp
  Dim payload
  payload="OID="&Timer*100
  Set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP.6.0")
  xmlhttp.setTimeouts 30,500,1000,1000
  xmlhttp.Open "GET", "http://sameserver.com/test.asp?"&payload , false
  On Error Resume Next
  xmlhttp.Send
  If Err.Number Then
    response.write "ERROR: Could Not Retrieve Remote Server <br>  Error Number: "&Err.Number&"<br>Error Description: "&Err.Description
    Err.Clear
  Else
    response.write = "OK: "&xmlhttp.ResponseText
  End If
  On Error Goto 0
  Set xmlhttp = nothing
%>

在旧服务器上工作但在新服务器上返回

Error Number: -2147012894
Error Description: Operation Timeout

我认为新服务器上有一些错误/缺失的设置,可能是在 IIS 设置中,但我也在 PHP 中尝试了一个非常简单的测试,效果很好:

<?php
    $timer= new DateTime();
    $payload='OID='.$timer->format('Y-m-d%20H:i:s');
    $url='http://sameserver.com/test.asp?'.$payload;
    echo file_get_contents($url);
?>

显然我可以更改这些例程并使用 PHP,但我担心这个错误可能还会导致其他目前未公开的问题

能否提出可能的原因,或者,至少,必须进行哪些检查?

谢谢

【问题讨论】:

    标签: asp-classic iis-8 iis-10


    【解决方案1】:

    您的答案是here。 Microsoft 建议不要将 ServerXMLHTTP 发送到同一服务器。可能有其他选择;从您发布的代码中很难判断您要做什么。

    【讨论】:

    • 是的,其实我忘了添加test.asp的内容,而是一个简单的response.write OID 无论如何我找到了解决方案,虽然同意MS的建议:The workaround is to (either) disable debugging server side
    猜你喜欢
    • 1970-01-01
    • 2010-09-05
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多