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

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

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

有什么想法吗?

【问题讨论】:

标签: asp.net timeout


【解决方案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();
}

【讨论】:

    猜你喜欢
    • 2012-06-18
    • 2012-03-12
    • 1970-01-01
    • 2014-03-26
    • 1970-01-01
    • 2010-12-12
    • 2012-03-15
    • 1970-01-01
    • 2016-02-12
    相关资源
    最近更新 更多