对于长时间运行的服务器端任务,ASP.Net连接保持活动状态

时间:2012-03-12 02:07:54

标签: asp.net

我有一个在IIS上运行的ASP.Net C#Web应用程序,我支持它涉及生成word文档。这些word文档中的一些文档需要很长时间(即超过20-30分钟)才能生成。在我的开发服务器上进行测试时,我注意到服务器在进程完成之前很久就关闭了连接,服务器端ASP.Net代码本身进入循环并在单词doc生成完成时更新布尔值的状态。

我的解决方法是通过在客户端实现动态动画等待屏幕(使用jquery和ajax)来保持连接活动,该屏幕通过对服务器的重复异步AJAX调用进行更新,该服务器检查操作的状态从服务器端Web方法。我在另一个question询问那件作品。

我正在寻求解决这个问题的最佳方法吗?在长时间运行的服务器端操作期间,是否有更有效或常用的方法来保持连接活动?感谢任何帮助或见解。

更新:

我尝试过Brian的建议,遗憾的是我仍然从Chrome中得到同样的错误,即没有数据从服务器发送,整个错误如下:

  

未收到任何数据无法加载网页,因为服务器未发送   数据。

     

以下是一些建议:稍后重新加载此网页。

     

错误324(net :: ERR_EMPTY_RESPONSE):服务器关闭了连接   没有发送任何数据。

我将再次尝试通过如上所述在高级网站设置中设置连接超时并增加连接空闲设置。

2 个答案:

答案 0 :(得分:0)

理想情况下,您将使用套接字在流程完成时通知客户端。请查看socket.io或本机Web-socket实现,了解如何执行此操作。

答案 1 :(得分:0)

您可以控制IIS 7中的空闲时间。这可以通过进入IIS管理来完成。选择应用程序池;然后右键单击您用于网站的池。单击此处的“高级设置”,您将能够控制网站的空闲时间和其他一些设置。希望这是你想要的。