如何为长时间运行的查询增加executionTimeout?
在我的应用程序中,一个查询需要3分钟才能执行。 我发现默认ExecutionTimeout值是110秒 。我试图将其更改为500(秒),但它并没有解决我的问题。 在某处我发现设置<compilation debug="false">
允许configurationExecutionTimeout属性。 但是,即使这并没有解决我的问题。
有谁知道我可以如何增加长时间运行查询的执行超时?
对于.NET
Framework 1.0和1.1,执行超时为90秒,否则为110秒。
如果你需要更改defult设置,你需要在web.config
<httpRuntime>
<httpRuntime executionTimeout = "number(in seconds)"/>
但要记住:
只有编译元素中的debug属性为False时,此超时才适用。
关于编译元素有详细的看看
看看这个关于httpRuntime元素的文档
你可以在web.config中设置executionTimeout
来支持更长的执行时间。
executionTimeout
指定在被ASP.NET自动closures之前允许执行请求的最大秒数。 MSDN
<httpRuntime executionTimeout = "300" />
这使执行超时五分钟 。
可选的Int32属性。
指定在被ASP.NET自动closures之前允许执行请求的最大秒数。
只有编译元素中的debug属性为False时,此超时才适用。 因此,如果debug属性为True,则不必将此属性设置为较大的值,以避免在debugging时closures应用程序。 默认值是110秒, 参考 。
回覆。 “我们可以为单个页面设置这个值” – MonsterMMORPG。
是的,您可以(通常应该)使用位置标记附上先前的答案。
例如
... <location path="YourWebpage.aspx"> <system.web> <httpRuntime executionTimeout="300" maxRequestLength="29296" /> </system.web> </location> </configuration>
上面的代码片段是从我自己的工作web.config,我昨天testing的结束采取 – 它适用于我。
当一个查询需要那么长时间时,我会build议asynchronous运行,并在完成时使用callback函数。
我没有太多的ASP.NET经验,但也许你可以使用AJAX的这种asynchronous行为。
通常,网页应该在几秒钟内加载,而不是几分钟。 不要让你的用户等待这么久!
在我的情况下,我需要让我的wcf运行超过2个小时。 设置和根本没有工作。 wcf的执行时间不超过20〜30分钟。 所以我改变了IISpipe理器中的应用程序池的空闲超时设置,然后它工作! 在IISpipe理器中,select您的应用程序池并右键单击它并select高级设置,然后将空闲超时设置更改为您需要的任何分钟。 所以,我认为设置web.config和设置应用程序池都是需要的。
要设置每个页面级别的超时时间,您可以使用这个简单的代码:
Page.Server.ScriptTimeout = 60;
注:60表示60秒,只有在编译元素中的debug属性为False时,此超时才适用。