executionTimeout和Server.ScriptTimeout之间的区别

Mar*_*rse 20 asp.net iis

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

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

<location path="~/MyPage.aspx">
    <system.web>
      <httpRuntime executionTimeout="600"/>      
    </system.web>    
  </location>
Run Code Online (Sandbox Code Playgroud)

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

protected void Page_Load(object sender, EventArgs e)
{
Page.Server.ScriptTimeout = 600;
}
Run Code Online (Sandbox Code Playgroud)

Ama*_*ian 15

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

  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的执行超时.或者,如果我们在页面代码中执行异步调用,我们可以为异步调用设置超时

希望有所帮助


Fir*_*tal 8

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

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

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