在每个页面上增加ASP.Net超时时间

32

是否可以增加单个ASP.net页面的超时时间?我知道在服务器级别上是可能的,但在页面级别上是否可能?

我需要为一个需要2-3分钟加载的单独报告页面实现此功能。

有什么想法吗?


增加超时时间?你是指减少它吗?为了增加页面加载的时间,你可以使用Thread.Sleep (http://msdn.microsoft.com/en-us/library/d00bd51t.aspx)。 - Arseni Mourzenko
3个回答

35

我认为你正在寻找的是 ScriptTimeout。你可以像这样在页面中设置它:

Page.Server.ScriptTimeout = 60;

超时时间以秒为单位。

此外,请注意,如果您正在调试模式下运行,则会忽略此设置并将超时设置为最大值。但我认为这对您不是问题,因为您正在增加超时时间,而不是减少它。


对我有用。我还必须增加maxRequestLength以返回大文件。它在Web.config中,system.web部分,紧挨着默认的ScriptTimeout:<httpRuntime executionTimeout="43200" maxRequestLength="104856" /> - Andomar
3
这篇文章中提到ScriptTimeout是经典ASP的,而ExecutionTimeout取代了它,但似乎不能在页面级别上设置后者,因此这似乎是一种遗留下来的技巧?(也可参考这里) - PeterX

21
根据这个页面和我的验证, 另一个实现此目的的好方法是将以下内容添加到配置文件的configSection:
  <location path="~/MyPage.aspx">
    <system.web>
      <httpRuntime executionTimeout="600"/>      
    </system.web>    
  </location>

您还可以添加其他属性,例如maxRequestLength="204800" 或其他部分,如:
  <location path="~/MyPage.aspx">
    <system.web>
      <httpRuntime executionTimeout="6000" maxRequestLength="204800" />      
    </system.web>    
    <system.webServer>
      <security>
        <requestFiltering>
          <requestLimits maxAllowedContentLength="209715200" />
        </requestFiltering>
      </security>
    </system.webServer>
  </location>

希望这能有所帮助。

这个方法也适用于像MVC应用程序或你为特定URL注册的OWIN中间件这样的虚拟路径吗? - flq
嗯...有趣的问题。可能会起作用,但我没有尝试过。最多,您可能需要根据情况微调位置路径、HTTP处理程序和/或路由器处理程序类才能使其正常工作。如果有什么进展,请告诉我。很好奇。 - Krishnan
对于其他人的疑问...executionTimeout="600"即为5分钟。该参数以秒为单位。 - Le-roy Staines

1
我发现我的问题通过增加SQL超时时间得以解决,使用command.CommandTimeout = 100;,例如:
using (var connection = new SqlConnection(connectionString)) 
{
  connection.Open();
  SqlCommand command = new SqlCommand(queryString, connection);
  // Setting command timeout to 100 seconds
  command.CommandTimeout = 100;
  command.ExecuteNonQuery();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接