如何在2013年控制ASP.NET请求超时?

时间:2013-09-12 20:01:18

标签: asp.net asp.net-mvc iis asp.net-web-api

我们有一些特定的网页和Web Api服务,可以调用长时间运行的后端进程;我们想仔细控制何时超时。

我创建了一个简单的MVC 4站点(在VS2012中),其中一个页面在返回之前会休眠200秒。然后我设置这些超时:

  • (在web.config中):httpRuntime executionTimeout="120"
  • (在global.asax Application_Start中):Server.ScriptTimeout = 120
  • 在IIS(7.5)管理器中,我访问了该网站>高级设置>连接限制,并将连接超时设置为120

我无法让此页面超时。它在200秒后成功返回,在120秒没有超时。我甚至尝试使用curl(禁用tcp keepalive)使浏览器脱离图片:curl --no-keepalive mysiteurl

2 个答案:

答案 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

时,将属性设置为较大的值以避免应用程序关闭