executionTimeout和Server.ScriptTimeout之间的区别

问题描述 投票:20回答:4

我有一个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;
}
asp.net iis
4个回答
15
投票

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

  1. 只有在web.config中将“debug”设置为false时,此设置才会生效,如:

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

  1. 即使我们设置了debug="false",当值非常小时,executionTimeout仍会有一些延迟。实际上,建议我们不要将超时设置为小于1.5分钟。当我们将超时设置为小于1分钟时,延迟将从5秒延长到15秒。例如,如果我们设置executionTimeout =“5”,页面可能需要15秒才能超时。

Server.ScriptTimeout属性是一个COM接口,用于经典ASP。 ASP.NET的executionTimeout是asp.net中ScriptTimeout的替代品,因此我们不再需要在asp.net中使用ScriptTimeout。

另外,脚本总是在2秒后终止

我恐怕在asp.net的运行时设置中没有办法,因为asp.net的运行时请求处理管理无法达到这个级别的准确性,2秒是一个太小的值,这可能会使性能非常高,以监控这样的小间隔。如果我们确实需要让某个处理超时,我们可以考虑将超时逻辑放在上面的应用程序代码级别。例如,如果我们正在执行SqlCommand,我们可以设置sqlcommand的执行超时。或者,如果我们在页面代码中执行异步调用,我们可以为异步调用设置超时

希望有所帮助


8
投票

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

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

我只是认为微软说“executionTimeout”与“ScriptTimeout”属性相同可能是有益的。


4
投票

executionTimeout

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

ScriptTimeout

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


0
投票

关键区别在于一个用于整个站点,另一个用于设置页面级别。

它们是相同的设置。对于大多数事情使用web.config,如果您需要更长时间执行特定页面(可能运行长报表或批处理作业),请在页面级别设置:

\\set page timeout to 40 minutes
Page.Server.ScriptTimeout = 2400;
© www.soinside.com 2019 - 2024. All rights reserved.