executionTimeout和Server.ScriptTimeout之间的区别

时间:2014-01-03 10:22:07

标签: asp.net iis

我有一个aspx页面,其中包含在服务器上执行可能需要5分钟或更长时间的代码。所以我需要延长请求超时之前的时间。

将此内容放在网站的web.config中有什么区别:

<location path="~/MyPage.aspx">
    <system.web>
      <httpRuntime executionTimeout="600"/>      
    </system.web>    
  </location>

并将其放在页面后面的代码中:

protected void Page_Load(object sender, EventArgs e)
{
Page.Server.ScriptTimeout = 600;
}

4 个答案:

答案 0 :(得分:15)

至于ASP.NET <httpRuntime> executionTimeout 设置 配置不工作的问题。关于这个属性的文档真的不是很清楚。问题是由以下原因引起的:

  1. 此设置仅在我们将“debug”设置为false时生效 web.config,如:

  2. 设置为"debug=true" mode时,运行时将忽略超时设置。

    1. 即使我们设置debug="false",executionTimeout仍然会有一些 当值非常小时延迟。事实上,我们建议不这样做 设置超时不到1.5分钟。当我们将超时设置为更小时 超过1分钟,延迟将从5秒到15秒。例如, 如果我们设置executionTimeout =“5”,页面可能需要15秒 超时。
    2. Server.ScriptTimeout 属性是一个COM接口,用于经典ASP。 ASP.NET的executionTimeout是asp.net中ScriptTimeout的替代,因此我们不再需要在asp.net中使用ScriptTimeout。

      另外,至于 让脚本在2秒后终止

      我害怕asp.net的运行时设置中没有任何方法 asp.net的运行时请求处理管理无法达到这个级别 精度,2秒是一个太小的值,可能会使性能 非常密切监视这么小的间隔。如果我们确实需要让一个 某些处理超时,我们可以考虑把超时逻辑放在 以上应用程序代码级别例如,如果我们正在执行SqlCommand, 我们可以设置sqlcommand的执行超时。或者如果我们正在执行 在页面代码中进行异步调用,我们可以为异步调用设置超时

      希望有所帮助。

答案 1 :(得分:8)

从这个页面,一些官方信息: https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.scripttimeout%28v=vs.110%29.aspx

  

可以在 Web.config 文件中设置 ScriptTimeout 属性   设置元素的 executionTimeout 属性。设置   使用ScriptTimeout属性以编程方式超时   优先于Web.config设置。

我只是认为微软说&#34; executionTimeout&#34;与&#34; ScriptTimeout&#34;。

属性相同

答案 2 :(得分:4)

<强> executionTimeout

可选的TimeSpan属性。 指定在ASP.NET自动关闭之前允许执行请求的最大秒数。 仅当编译元素中的debug属性为False时,此超时才适用。为了防止在调试时关闭应用程序,请不要将此超时设置为较大的值。 默认为“00:01:50”(110秒)。

<强> ScriptTimeout

可以使用AspScriptTimeout配置数据库属性为Web服务或Web服务器设置默认的ScriptTimeout。 ScriptTimeout属性不能设置为小于元数据库中指定的值。例如,如果NumSeconds设置为10,并且配置数据库设置包含默认值90秒,则脚本将在90秒后超时。但是,如果将NumSeconds设置为100,脚本将在100秒后超时。

答案 3 :(得分:0)

主要区别是一个是针对整个网站,另一个则可以在页面级别进行设置。

它们是相同的设置。在大多数情况下,请使用web.config,如果您需要在特定页面上执行更长的时间(可能会执行较长的报告或批处理作业),请在页面一级进行设置:

\\set page timeout to 40 minutes
Page.Server.ScriptTimeout = 2400;
相关问题