Hi hulkwsu,
Lots of things could happen which can recycle the aspnet worker process thus to expire the session.
1- Modify the web.config file or replace files in the bin folder at runtime
2- Delete folders from inside the application root folder at runtime.
3- Virus scan on the server.
4- Memory leaks
There are 3 modes of sessionstate. First need to decide with which mode you want to proceed.
[1]In Process:<sessionState mode="InProc" cookieless="false" timeout="20" />
[2]StateServer (outProcess):
<sessionState mode="StateServer" stateConnectionString="tcpip=myserver:42424" cookieless="false" timeout="20" />
[3]SQLServer (database based):
<sessionState mode="SqlServer" sqlConnectionString="data source=127.0.0.1;user id=sa; password=" cookieless="false" timeout="20" />
If you want to enhance the length of the timeout, you can set the timeout property.
Or configure the IIS.
For more information which is related to Session, please check the following links:
ASP.NET Session State
http://msdn.microsoft.com/en-us/library/ms972429.aspx
Session FAQ
http://www.syncfusion.com/faq/aspnet/web_c9c.aspx
Underpinnings of the Session State Implementation in ASP.NET
http://msdn.microsoft.com/en-us/library/aa479041.aspx
ASP.NET Session State
http://forums.asp.net/p/1434220/3238407.aspx#3238407
increase session timeout
http://forums.asp.net/t/1283350.aspx
http://forums.asp.net/p/1430522/3209701.aspx#3209701
If you have any questions, please feel free to let me know.