如何为长时间运行的查询增加executionTimeout?

时间:2012-05-18 09:14:20

标签: c# asp.net

在我的应用程序中,一个查询需要3分钟才能执行。我发现默认ExecutionTimeout值是110秒。我试图将其更改为500(秒),但它没有解决我的问题。某处我发现设置<compilation debug="false">允许配置 ExecutionTimeout 属性。但是,即使这样也没有解决我的问题。

有谁知道如何为长时间运行的查询增加执行超时?

6 个答案:

答案 0 :(得分:104)

.NET Framework 1.0和1.1的执行超时为90秒,否则为110秒。

如果您需要更改defult设置,则需要在web.config下的<httpRuntime>

下进行更改
<httpRuntime executionTimeout = "number(in seconds)"/>

但请记住:

仅当编译元素中的debug属性为False时,此超时才适用。

详细了解compilation Element

请查看有关httpRuntime Element

的文档

答案 1 :(得分:23)

您可以在 web.config 中设置executionTimeout以支持更长的执行时间。

executionTimeout指定在ASP.NET自动关闭之前允许执行请求的最大秒数。 MSDN

<httpRuntime  executionTimeout = "300" />

这会使执行超时五分钟

可选的Int32属性。

  

指定允许请求的最大秒数   在被ASP.NET自动关闭之前执行。

     

此超时仅适用于编译中的debug属性   元素是假的。因此,如果debug属性为True,则执行此操作   不必将此属性设置为较大的值以避免   在调试时关闭应用程序。默认值为110秒,Reference

答案 2 :(得分:8)

RE。 “我们可以为单个页面设置此值” - MonsterMMORPG。

是的,您可以(通常应该)使用location-tag包含上一个答案。

e.g。

  ...
  <location path="YourWebpage.aspx">
    <system.web>
      <httpRuntime executionTimeout="300" maxRequestLength="29296" />
    </system.web>
  </location>
</configuration>

上面的代码片段是从我自己的web.config结尾处获取的,我昨天测试过它 - 它对我有用。

答案 3 :(得分:2)

当查询花费那么长时间时,我会建议异步运行它并在完成时使用回调函数。

我对ASP.NET没有多少经验,但也许你可以使用AJAX来实现这种异步行为。

通常,网页应该在几秒钟内加载,而不是几分钟。不要让用户等待这么久!

答案 4 :(得分:2)

要在每页级别设置超时,您可以使用以下简单代码:

Page.Server.ScriptTimeout = 60;

注意:60表示60秒,仅当编译元素中的debug属性为False时才应用此超时。

答案 5 :(得分:1)

在我的情况下,我需要让我的wcf运行超过2个小时。设置并且根本不起作用。 wcf的执行时间不超过20~30分钟。所以我在IIS管理器中更改了应用程序池的空闲超时设置然后它工作了!在IIS管理器中,选择您的应用程序池并右键单击它并选择高级设置,然后将空闲超时设置更改为您想要的任何分钟。所以,我认为需要设置web.config并设置应用程序池。