增加每页级别的 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.config
,system.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 超时的主要内容,如果未能解决你的问题,请参考以下文章