AJAX调用没有启动IIS工作进程?

时间:2010-12-21 21:44:59

标签: asp.net .net-3.5 jquery iis-6 asmx

首先,我不是IIS配置主题的专家。

话虽如此,我有一个用VB.NET 3.5 Web Forms编写的网站。我有一个小型Web服务ASMX,作为本网站的一部分运行。网站上的一个页面使用AJAX调用Web服务(jQuery $ .ajax函数,post)。该服务器正在运行Windows 2003和IIS 6.0。网站和Web服务共享相同的应用程序池。

在IIS应用程序池属性中,有一个设置“空闲超时”,其中显示“在N空闲后关闭工作进程(以分钟为单位)”。问题是当工作进程在N分钟后关闭时,它不会再从页面的任何AJAX调用上再次启动。关于在这种情况下该怎么做的任何想法?在AJAX方面,我之前只处理过.NET MVC,我从未见过这样的事情。

日志中没有错误。以下是服务器通过XmlHttpRequest返回的内容:

  

准备状态:4

     

状态:500

     

状态文本:内部服务器错误

     

Xhr消息:未定义

     

响应文字:{“消息”:“有   处理请求时出错。“,   “堆栈跟踪”: “”, “ExceptionType”: “”}

我被告知将关机值设置为一个很大的数字,比如24小时,就可以解决这个问题...我猜它会,但对我来说这似乎不是一个合适的解决方案。任何建议都非常感谢。谢谢!

编辑: 这是JavaScript $ .ajax调用。我不确定这是否会有所不同。

  $.ajax({
    type: "POST",
    url: "MyWebService.asmx/GetRecordsExceedingMessage",
    data: '{}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {
      LMM.Operative_CheckError(result);  //display Records Exceeding Message as validation error
    },
    error: function(xhr, status) {
      LMM.Operative_DisplayClientErrors(xhr);
    }
  });

编辑: 我刚从网站的Web.config中记得这篇小文章:

<webServices>
  <protocols>
    <remove name="HttpGet"/>
    <remove name="HttpPost"/>
    <remove name="HttpPostLocalhost"/>
    <remove name="Documentation"/>
    <remove name="AnyHttpSoap"/>
  </protocols>
</webServices>

2 个答案:

答案 0 :(得分:0)

请参阅以下类似的帖子,其中提到了如何完全关闭空闲超时:Overcome compilation(?) pause on *secondary* initial ASP.Net application startup?。或者你可以像你说的那样设置超时,或者你可以在每几分钟向网站发出请求的服务器上欺骗并编写一个Windows服务。

答案 1 :(得分:0)

MyWebService.asmx / GetRecordsExceedingMessage实际上是访问您的asmx的正确方法吗?如果你手动获取该URL,它会启动工作者吗?也可能是您的处理程序只处理某种内容类型,因此您的application / json不会触发它。

我猜你的处理程序映射不起作用,因此IIS错误输出并且永远不会启动你的应用程序池。尝试激活IIS的详细错误,我知道你可以为IIS7及以后做到这一点,不知道如何在IIS6中这样做,也许这会有所帮助:

  

在IIS控制面板中选择网站,右键单击属性,然后选择自定义错误选项卡。

     

现在选择所有自定义页面(单击首页,按shift并单击底部页面),然后单击设置为默认值。现在所有页面都显示为默认值。

     

停止并重新启动IIS,现在您应该得到详细的错误。

相关问题