App domain restarts
If you suspect app domain restarts (i.e. your sessions seem to expire without obvious reasons), you will be interested to know when the restarts happen and what's causing them.
In ASP.Net 2.0 add the following element in global web.config file (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG) as a child of the <healthMonitoring><rules> elements:
<healthMonitoring>
<rules>
<add name="Application Lifetime Events Default" eventName="Application Lifetime Events"
provider="EventLogProvider" profile="Default" minInstances="1" maxLimit="Infinite"
minInterval="00:01:00" custom="" />
</rules>
</healthMonitoring>
If the timeout error message reads as follows:
"System.Web.HttpException: Request timed out."
Check for <httpRuntime executionTimeout/> in appication's Web.config file
executionTimeout - Specifies the maximum number of seconds that a request is allowed to execute before being automatically shut down by ASP.NET.
You can change this setting in machine.config to affect all applications on your site, or you can override the settings in your application-specific web.config as follows:
<system.web>
<httpRuntime executionTimeout="900" />
</system.web>
Note: This time-out applies only if the debug attribute in the compilation element is False. If the debug attribute is True, to help avoiding application shut-down while you are debugging, do not set this time-out to a large value.
The default values in seconds-
In the .NET Framework 2.0 = 110.
In the .NET Framework 1.0 and 1.1= 90.
Set the Session timeout in IIS Manager in default website also.
Go to IIS Manager, right click on the virtual directory and choose properties.
Now go to virtual directory tab, click Configuration button.
A dialog box will appears. Choose AppOptions tab. Set the session timeout that u need. This will solve the problem. If you are getting the same problem again then set the same thing for Default WebSite also.
Remove the session timeout check in IIS, then the timeout will be read from the web.config.
Add following code in the web.config of your application file under <system.web>
<sessionState cookieless="false" timeout="330"/>
For random session timeouts, timeout occurring before the value set in sessionstate and idle timeouts, check if the application pool in IIS 6.0 has any 'Memory recycling' values selected and they are set up to some low sizes both for virtual or used memoray.
Ex-If 200 Mb is set and the application reaches this limit in 5 minutes, the recycle happens and any sessions will be thus killed sooner than expected. See the figure below
Exclude Antivirus scanning from the IIS/ASP.NET default folders and your application folders.
-
C:\WINDOWS\system32\inetsrv
-
C:\WINDOWS\assembly\GAC_32
-
C:\WINDOWS\Microsoft.NET\Framework\ (this should cover all versions of framework)
-
Any application directory containing web.config files, global.asax, .net assemblies.