无法识别请求格式,因为1-2天后意外以\'/ Convert\'结尾的URL会发生

问题描述

| 我正在使用Microsoft.XMLHTTP调用调用Web服务:
var xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\");
xmlhttp.open(\"POST\",\"/xxx/Converter.asmx/Convert\",false);
xmlhttp.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\");
xmlhttp.send(\"conversionFolder=\" + escape(conversionFolder));
if (xmlhttp.status == 200) {
  xmlDoc = new ActiveXObject(\"Microsoft.XMLDOM\");
  xmlDoc.async = \"false\";
  xmlDoc.loadXML(xmlhttp.responseText);
  ... more stuff ...
  return str;
}
else {
  alert(xmlhttp.statusCode + \" - \" + xmlhttp.statusText);
}
当我记得在本地web.config添加HttpPost协议时,一切工作正常:
<?xml version=\"1.0\"?>
<configuration>
  <appSettings/>
  <connectionStrings/>
  <system.web>
    <webServices>
      <protocols>
        <add name=\"HttpPost\"/>
      </protocols>
    </webServices>
    <compilation debug=\"false\"></compilation>
  </system.web>
  <system.codedom>
  </system.codedom>
  <!--
    The system.webServer section is required for running ASP.NET AJAX under Internet
    information Services 7.0.  It is not necessary for prevIoUs version of IIS.
  -->
  <system.webServer>
  </system.webServer>
</configuration>
但是在一台生产服务器上,它运行1-2天后会失败。回收asp.net进程后,它可以正常工作。它可以工作1-2天,然后失败:
Exception information:
Exception type: InvalidOperationException
Exception message: Request format is unrecognized for URL unexpectedly ending in \'/Convert\'.

Request information:
Request URL: https://xxx/xxx/converter.asmx/Convert
Request path: /xxx/converter.asmx/Convert
User host address: 195.50.35.4
User: extranet\\kbk
Is authenticated: True
Authentication Type:
Thread account name: NT AUTHORITY\\NETWORK SERVICE

Thread information:
Thread ID: 14
Thread account name: NT AUTHORITY\\NETWORK SERVICE
Is impersonating: False
Stack trace: at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type,HttpContext context,HttpRequest request,HttpResponse response)
at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context,String verb,String url,String filePath)
at System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context,String requestType,String pathTranslated)
at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step,Boolean& completedSynchronously)
为什么要等待2天才能失败?我该怎么做才能防止失败? 该服务器以HTTPS模式运行与该事实有关吗?     

解决方法

        什么是点网框架? IIS 6或7? 您是否尝试过在协议部分添加ѭ3。似乎有些人已经解决了该问题。 (但不是全部) 链接1 连结2 还要检查您将站点部署到哪里。是在Web服务器的根级别还是虚拟文件夹中。有时可能是从父级站点或machine.config文件继承一些配置值。 否则,可能与代码中的某些内存泄漏有关。您如何处理已加载的XML。 另外,我假设您正在解析有效的XML。     ,        回收应用程序池几天后,似乎有一个修复程序可用于修复问题: http://support.microsoft.com/kb/2783777/en-us     ,        似乎默认情况下该协议是禁用的。 Stackoverflow中已经回答了类似的问题。检查此链接和相关问题