I have been exploring Session Timeouts in ASP.Net for some time now. Those of you working on Web Applications would have surely experienced unexpected timeouts resulting in abrupt restart of the application, many a times these timeouts apparently occur for no specific reason.
Here, I present a brief checklist that may come in handy while dealing with such issues
Causes for Session Timeout could vary from-
New to ASP.Net 2.0 -The 7th point of Sub directories. i.e. Whenever you delete or rename a sub-directory of your application, the application domain is recycled, terminating all users' sessions (and the cache, etc). This is a big performance hit. This behavior affects dramatically sites that allow document publishing, to the point where they stop functioning. Imagine a situation where a request creates a thread that goes through sub-directories of the application and deletes / renames them - without knowing about this 2.0 application domain recycling policy, chances are that the worker thread in question will not complete because the domain is recycled and the thread aborted.
Huge Performance Hit
Above results in recycling of Application Domain. At the next request all assemblies need to be reloaded, the cache including any in-proc session variables etc. are empty causing a big performance hit for the application. Remedies/ solutions
<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> This will log system events that provide the time and the reason of the restart (such as: Application is shutting down. Reason: Configuration changed.)In ASP.Net 1.1, see- Logging ASP.NET Application Shutdown Events in ASP.Net 1.1http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx If the timeout error message reads as follows: "System.Web.HttpException: Request timed out."Check for <httpRuntime executionTimeout/> in appication's Web.config fileexecutionTimeout - 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.
<system.web>
<httpRuntime executionTimeout="900" />
You need to be a premium member to use this feature. To access it, you'll have to upgrade your membership.
Become a sharper developer and jumpstart your career.
$0
$
. 00
monthly
For Basic members:
$20
For Premium members:
$45
For Elite members: