ASP.NET Web服务上长时间运行的SOAP请求导致无响应

时间:2009-11-03 03:32:40

标签: asp.net web-services soap iis-6

我们在IIS6上的ASP.NET Web服务上运行SOAP Web服务,当它处理导致长服务器时间处理的请求时,会出现奇怪的行为。基本上,如果请求在服务器上处理超过大约5分钟,那么IIS永远不会将响应发送回客户端,即使从ASP.NET的角度来看,调用已完成。我们知道这一点,因为我们在Web方法调用的开始和结束时将条目写入应用程序日志,并且这些日志条目会写入。但是,实际上没有发送任何响应,并且连接保持打开状态,看似无限期。在一次测试中,我们看到连接在我们手动停止测试客户端之前保持打开超过24小时。

我们有一个测试SOAP客户端,它能够检测到响应从服务器开始向下流式传输的时刻,并且在服务器处理时间过长的情况下,没有任何内容被流式传输。即使有大量的响应有效负载,我们也应该在Web方法的“结束”应用程序日志条目写入后不久就开始看到响应涓涓细流,但我们从未看到它。

很难确定事件在这个庄园中表现的确切服务器处理时间。我们有一个长时间运行的测试调用,导致大约2.5分钟的服务器处理时间,并且该调用导致对客户端的成功响应。我们有另一个需要大约8分钟而且如上所述那个失败了。所以门槛必须介于两者之间。

1 个答案:

答案 0 :(得分:1)

我建议您调用Web方法来开始执行所需任务,而不是使用其他方法轮询服务器以完成任务。我2年前遇到了同样的问题,我就这样解决了。客户端在服务器上对任务进行排队,然后在一些指定的时间间隔后向服务器询问任务的结果。

我希望有所帮助。