增加每页级别的 ASP.Net 超时

Posted

技术标签:

【中文标题】增加每页级别的 ASP.Net 超时【英文标题】:Increase ASP.Net timeout on a per page level 【发布时间】:2011-03-07 17:24:26 【问题描述】:

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

我需要这个用于加载需要 2-3 分钟的单个报告页面

有什么想法吗?

【问题讨论】:

增加超时时间?你的意思是减少吗?要增加页面加载时间,您始终可以使用 Thread.Sleep (msdn.microsoft.com/en-us/library/d00bd51t.aspx)。 【参考方案1】:

我认为您正在寻找的是ScriptTimeout。您可以像这样设置此页内:

Page.Server.ScriptTimeout = 60;

超时值以秒为单位。

另外,请注意,如果您在调试模式下运行,这将被忽略并且超时设置为最大值;不过,我认为这对您来说不是问题,因为您正在增加超时,而不是减少它。

【讨论】:

为我工作。我还必须创建 maxRequestLength 才能返回一个大文件。它位于Web.configsystem.web 部分,紧邻默认 ScriptTimeout:<httpRuntime executionTimeout="43200" maxRequestLength="104856" /> This 建议 ScriptTimeout 是经典的 ASP 并且 ExecutionTimeout 替换它,但是您似乎不能在页面级别设置后者,所以这似乎有点遗留黑客? (也here)。【参考方案2】:

根据this page,我也可以验证,实现此目的的另一个好方法是将其添加到您的配置的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 中间件的路径? 嗯...有趣的问题。应该可以吧,不过我没试过。最多,您必须相应地调整位置路径和/或 http 处理程序和/或路由器处理程序类才能使其工作。如果有什么对你有用的,请告诉我。好奇。 对于其他想知道的人... executionTimeout="600" 是 5 分钟。参数以秒为单位。【参考方案3】:

我发现我的问题已通过增加 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();

【讨论】:

以上是关于增加每页级别的 ASP.Net 超时的主要内容,如果未能解决你的问题,请参考以下文章

保持 ASP.NET 会话打开/活动

ASP.NET 中的会话固定

Asp.net 在word文档每页指定位置插入图片

ASP.NET 中的会话超时

什么是 ASP.NET 中的默认会话超时?

长时间 ASP.NET 操作的 IIS 请求超时