我们有一些特定的网页和Web Api服务,可以调用长时间运行的后端进程;我们想仔细控制何时超时。
我创建了一个简单的MVC 4站点(在VS2012中),其中一个页面在返回之前会休眠200秒。然后我设置这些超时:
httpRuntime executionTimeout="120"
Server.ScriptTimeout = 120
我无法让此页面超时。它在200秒后成功返回,在120秒没有超时。我甚至尝试使用curl(禁用tcp keepalive)使浏览器脱离图片:curl --no-keepalive mysiteurl
答案 0 :(得分:2)
首先从您已经尝试的内容开始:
executionTimeOut = 120 表示当某些操作在服务器上运行并且完成时间超过120秒时,该操作将超时,类似于Server.ScriptTimeout的情况。 连接超时指定未建立连接的时间,将返回连接错误。
这意味着除非同步进程超过2分钟,或者ServerSide脚本运行超过2分钟,或者连接未建立,否则不会发生上述错误(执行超时)。
您可以使用什么。 我相信如果您希望页面在指定时间内超时,您应该只关注会话超时。您提到的其他超时会按预期工作,您可以依赖它们(如果您想测试事情是否正常,请参考this link。)
如果要执行某些数据库操作,则应考虑更改数据库连接的连接超时。
答案 1 :(得分:0)
如果启用了调试模式,则这些超时不适用:“仅当编译元素中的debug属性为False时,此超时才适用。因此,如果debug属性为True,则不必设置此值在调试“(http://msdn.microsoft.com/en-us/library/vstudio/e1f13641(v=vs.100).aspx)
时,将属性设置为较大的值以避免应用程序关闭