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



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

我的解决方法是通过在客户端实现动态动画等待屏幕(使用jquery和ajax)来保持连接的有效性,该屏幕通过对服务器的重复异步ajax调用来更新,该调用通过服务器端web方法检查操作的状态。我在另一个问题中问那篇文章。

我正在寻找的解决方案是解决这个问题的最佳方法吗?在长时间运行的服务器端操作中,是否有更有效或更常见的方法来保持连接的有效性?感谢您的帮助或见解。

更新:

我尝试了Brian的建议,不幸的是,我仍然从Chrome中收到相同的错误,即没有从服务器发送数据,整个错误如下:

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

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

错误324(网络::ERR_EMPTY_REPONSE):服务器关闭了连接而不发送任何数据。

我将按照说明在高级网站设置中设置连接超时并增加连接空闲设置,然后重试。

理想情况下,您应该使用套接字在进程完成时通知客户端。看看socket.io或本机web套接字实现,了解如何做到这一点。

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

最新更新