Difference between executionTimeout and Server.ScriptTimeout
asp.net, iis
Solution
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:
This setting will take effect only when we set the "debug" to false in web.config, like:
<compilation defaultLanguage="c#" debug="false" />
when set to `debug="true"` mode, the runtime will ignore the timeout setting.
Even we set the `debug="false"`, the `executionTimeout` will still has some delay when the value is very small. In fact, it is recommended 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 about 15 seconds for the page to timeout.
The `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 having the script always terminate after 2 seconds, I'm afraid there is no means in ASP.NET's runtime setting. ASP.NET's runtime request processing management can't reach this level of accuracy; 2 seconds is too small a 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 putting 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.
Problem
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; } ```