10分钟后就暂停了
本文关键字:暂停 10分钟 | 更新日期: 2023-09-27 18:05:22
我有一个web应用程序,它有一个函数需要一段时间才能运行,将近半个小时。
但10分钟后(总是10分钟)页面变成空白,没有错误信息或任何东西。
我尝试通过IIS从web服务器运行相同的页面,它工作正常。只有当我在服务器外运行它时才会发生这种情况…
有人知道为什么会发生这种情况吗?
谢谢
在web应用程序中有一个长时间运行的进程来保持HTTP请求的响应并不是最好的方案。如果web服务器在"合理"的时间内没有响应,大多数浏览器都会认为服务器出了问题。
你最好的解决方案是关闭一个异步线程来完成你的工作,然后返回一个页面给用户。这绝不是一个简单的解决方案,因为它带来了一些您通常不必担心的问题,例如错误处理和IIS由于请求管道中的不活动而杀死工作进程。然而,有很多关于在ASP.Net中运行后台进程的信息。我用谷歌搜索到的一些快速结果:
http://forums.asp.net/p/1244439/2282626.aspx # 2282626http://professionalaspnet.com/archive/2008/08/04/Creating-a-Background-Thread-to-Log-IP-Information.aspx
http://flimflan.com/blog/SafelyRunningBackgroundThreadsInASPNET20.aspx http://www.developerfusion.com/article/4272/net-threading-part-ii/6/可能是浏览器放弃/超时或操作系统切断连接?
如果您试图使用Visual Studio内置的开发服务器执行页面,你可以试着修改
c:'Program Files (x86)'Common Files'microsoft shared'DevServer'10.0'WebDev.WebServer40.exe.config
或类似,在配置节点下添加以下内容:
<system.web>
<httpRuntime maxRequestLength="1048576" executionTimeout="3600"/>
</system.web>
我正在做一些难以重构的遗留项目,遇到了同样的问题,它需要运行30分钟,因为我们将服务器转移到VM,没有人愿意修复VM问题,所以我被要求找到解决方案,我发现使用 response。Flush可以解决这个问题。
超时是来自浏览器,因为他们无法从web服务器获得任何响应数据很长一段时间,所以浏览器退出等待,但如果你添加响应。Flush即使在一开始它刷新http头到客户端,它使浏览器知道服务器是活的,所以浏览器将继续等待更多的数据到来。
是的,我知道这不是一个好的做法,我们应该像杰伊提到的那样做,但如果有人站在后面一直催促你快速解决问题,那么先试试这个。