【问题标题】:How to control ASP.NET request timeouts here in 2013?如何在 2013 年控制 ASP.NET 请求超时?
【发布时间】:2013-09-17 08:58:50
【问题描述】:

我们有一些特定的网页和 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

【问题讨论】:

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


    【解决方案1】:

    首先从你已经尝试过的开始:

    executionTimeOut=120 表示当某个操作在服务器上运行并且需要超过 120 秒才能完成时,该操作将超时,Server.ScriptTimeout 也是如此。 连接超时指定如果连接未建立,则返回连接错误的时间。

    这意味着上述错误(执行超时)不会发生,除非同步进程花费超过 2 分钟,或者 ServerSide 脚本运行超过 2 分钟,或者连接未建立。

    你可以使用什么。 我相信如果您希望页面在指定时间内超时,您应该只关心会话超时。您提到的其他超时将按预期工作,您可以依赖它们(如果您想测试事情是否正常,请参考 this link)。

    如果您正在执行一些数据库操作,那么您应该考虑更改数据库连接的连接超时。

    【讨论】:

    • Shashank,无论我做什么,我似乎都无法让 IIS/ASP.NET 在服务器端超时......而且我不确定你对 IIS > 连接是否正确限制 > 连接超时(文档表明它适用于已建立的连接)......但为您提供的良好链接 +1。
    • 戴夫感谢您标记我的答案。我相信即使连接超时我也是正确的。这是一个链接,您可以阅读它:microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/… 我可以引用的最好的例子是“如果您尝试上传非常大的文件,您会看到连接超时”。
    【解决方案2】:

    如果启用了调试模式,则这些超时不适用:

    仅当编译元素中的调试属性为 False 时才适用此超时。因此,如果 debug 属性为 True,则不必将此属性设置为很大的值,以避免在调试时关闭应用程序 (source)

    【讨论】:

      猜你喜欢
      • 2021-02-27
      • 1970-01-01
      • 2014-12-30
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      • 2021-08-10
      • 2011-02-26
      相关资源
      最近更新 更多