Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IIS Request Timeout on long ASP.NET operation

I am experiencing a request timeout from IIS when I run a long operation. Behind the scene my ASP.NET application is processing data, but the number of records being processed is large, and thus the operation is taking a long time.

However, I think IIS times out the session. Is this a problem with IIS or ASP.NET session?

like image 538
Tachi Avatar asked Sep 30 '10 09:09

Tachi


People also ask

How do I increase request timeout in IIS 10?

Expand the local computer node, expand "Web Sites", right-click the appropriate website, and then click Properties. 3. Click the "Web Site" tab. 4.In the Connections area, change the value in the "Connection timeout" field, and then click OK.

Does IIS have a timeout?

Internet Information Services (IIS) has several time-out values that are set by default when you install Windows Server 2003. Time-out values allow the server to specify how long server resources are allocated to specific tasks or clients. Time-out settings are configurable from IIS Manager as well.


1 Answers

If you want to extend the amount of time permitted for an ASP.NET script to execute then increase the Server.ScriptTimeout value. The default is 90 seconds for .NET 1.x and 110 seconds for .NET 2.0 and later.

For example:

// Increase script timeout for current page to five minutes Server.ScriptTimeout = 300; 

This value can also be configured in your web.config file in the httpRuntime configuration element:

<!-- Increase script timeout to five minutes --> <httpRuntime executionTimeout="300"    ... other configuration attributes ... /> 

enter image description here

Please note according to the MSDN documentation:

"This time-out applies only if the debug attribute in the compilation element is False. Therefore, if the debug attribute is True, you do not have to set this attribute to a large value in order to avoid application shutdown while you are debugging."

If you've already done this but are finding that your session is expiring then increase the ASP.NET HttpSessionState.Timeout value:

For example:

// Increase session timeout to thirty minutes Session.Timeout = 30; 

This value can also be configured in your web.config file in the sessionState configuration element:

<configuration>   <system.web>     <sessionState        mode="InProc"       cookieless="true"       timeout="30" />   </system.web> </configuration> 

If your script is taking several minutes to execute and there are many concurrent users then consider changing the page to an Asynchronous Page. This will increase the scalability of your application.

The other alternative, if you have administrator access to the server, is to consider this long running operation as a candidate for implementing as a scheduled task or a windows service.

like image 194
Kev Avatar answered Oct 01 '22 03:10

Kev