ASP.NET and session state management is designed in such a way that it may not act as you would expect. There are several issues you need to know such as:
* Life span of Session State / Session ID
* Why you sometimes keep getting a new Session ID on each request
* What effects having a Global.asax included to fix the issues
* How to work with Session State Timeouts
Here is an excellent post to fill in all those questions and more:
http://awww.aspnetresources.com/blog/session_state_qna.aspxAlso, while at the site, you might check into all the other resources available. Had several interesting tidbits in the blog posts:
http://awww.aspnetresources.com/blog/default.aspx