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

Rak*_*tti 47 c# asp.net

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

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

huM*_*pty 106

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

如果你需要更改defult设置,你需要在你的web.config下面做<httpRuntime>

<httpRuntime executionTimeout = "number(in seconds)"/>
Run Code Online (Sandbox Code Playgroud)

但要记住:

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

详细了解一下编译元素

看看这个关于httpRuntime Element的文档

  • 关于超时值的提示仅适用于web.config文件的编译元素中的debug ="true"时非常好. (35认同)
  • @EdGraham你的意思是"只有在debug = false时才应用超时值"?huMpty duMpty说:只有当编译元素中的debug属性为False时,才会应用此超时 (22认同)

Adi*_*dil 23

您可以executionTimeoutweb.config中设置以支持更长的执行时间.

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

<httpRuntime  executionTimeout = "300" />
Run Code Online (Sandbox Code Playgroud)

这使执行超时为五分钟.

可选的Int32属性.

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

仅当编译元素中的debug属性为False时,此超时才适用.因此,如果debug属性为True,则不必将此属性设置为较大的值,以避免在调试时关闭应用程序.默认值为110秒,参考.

  • 我们可以为单个页面设置此值 (4认同)

Zee*_*ek2 10

回覆."我们可以为单个页面设置此值" - MonsterMMORPG.

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

例如

  ...
  <location path="YourWebpage.aspx">
    <system.web>
      <httpRuntime executionTimeout="300" maxRequestLength="29296" />
    </system.web>
  </location>
</configuration>
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*vio 1

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

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

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

  • executiontimeout 适用于任何请求,同步或异步...因此 AJAX 请求将受到相同的时间限制 (4认同)