Difference between executionTimeout and Server.ScriptTimeout

I have an aspx page which contains code that is liable to take 5 minutes or more to execute on the server. So I need to extend the amount of time before the Request times out.

What is the difference between putting this in the web.config for the site:

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

and putting this in the code behind on the page:

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

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

As for the executionTimeout setting for ASP.NET’s <httpRuntime>
configuration not work problem. The documentation on this attribute is really not very clear. The problem is caused by the following reasons:

  1. This setting will take effect only when we set the “debug” to false in
    web.config , like:

when set to "debug=true" mode, the runtime will ignore the timeout setting.

  1. Even we set the debug="false", the executionTimeout will still has some
    delay when the value is very small. In fact, it is recommeded that we don’t
    set the timeout less than 1.5 minutes. And when we set the timeout to less
    than 1 minute, the delay will span from 5 secs up to 15 secs. For example,
    if we set executionTimeout=”5″, it may take a bout 15 seconds for the page
    to timeout.

Server.ScriptTimeout property is a COM interface which is used in classic ASP. The executionTimeout of ASP.NET is the replacement of ScriptTimeout in asp.net , so we no longer need to use ScriptTimeout in asp.net.

In addition, as for
have the script ALWAYS terminate after 2 seconds

I’m afraid there is no means in asp.net’s runtime setting since the
asp.net’s runtime request processing management can’t reach this level of
accuracy, 2 seconds is a too small value which may make the performance
very pool to monitor such a small interval. If we do need to let a
certain processing timeout, we can consider put the timeout logic in the
above application code level. For example, if we’re executing SqlCommand ,
we can set the sqlcommand ‘s execution timeout. Or if we are executing a
async call in page code, we can set a timeout for the async call

Hope helps.

Method 2

From this page, some official info:
https://msdn.microsoft.com/en-us/library/system.web.httpserverutility.scripttimeout%28v=vs.110%29.aspx

The ScriptTimeout property can be set in the Web.config file by
setting the executionTimeout attribute of the element. Setting the
time-out programmatically with the ScriptTimeout property takes
precedence over the Web.config setting.

I just thought it might be beneficial to note that Microsoft says “executionTimeout” is the same property as “ScriptTimeout”.

Method 3

executionTimeout

Optional TimeSpan attribute.
Specifies the maximum number of seconds that a request is allowed to execute before being automatically shut down by ASP.NET.
This time-out applies only if the debug attribute in the compilation element is False. To help to prevent shutting down the application while you are debugging, do not set this time-out to a large value.
The default is “00:01:50” (110 seconds).

ScriptTimeout

A default ScriptTimeout can be set for a Web service or Web server by using the AspScriptTimeout metabase property. The ScriptTimeout property cannot be set to a value less than that specified in the metabase. For example, if NumSeconds is set to 10, and the metabase setting contains the default value of 90 seconds, scripts will time out after 90 seconds. However, if NumSeconds were set to 100, the scripts would time out after 100 seconds.

Method 4

Key difference is one is for an entire site and the other you can set just at a page level.

They are the same setting. Use the web.config for most things and if you need a longer execution for a specific page (that might run a long report or batch job) set this at the page level:

\set page timeout to 40 minutes
Page.Server.ScriptTimeout = 2400;


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x