感谢您使用微软产品。
首先,请您确认这个问题是否是由于下面的文章描述的问题导致的:
Q323752 PRB: Session Variables Are Lost If You Use FRAMESET
http://support.microsoft.com/support/kb/articles/q323/7/52.asp
然后,请您打开Web.config确认您正在使用的Session类型,是Inproc,SQLServer还是其它?建议您提供<sessionState>元素中的具体信息。
根据我的经验,如果您正在使用InProc类型的Session, 有一些原因确实会导致Session的丢失,比如说一些防病毒软件等。具体的信息,建议您参阅下面的微软知识库文章:
Q324772 PRB: Session Data Is Lost When You Use ASP.NET InProc Mode
http://support.microsoft.com/support/kb/articles/q324/7/72.asp
建议您参考下面的步骤进行troubleshooting:
1. 启用ASP.NET的Trace.
在您的WebForm中,加入:<%Page trace="true"...%>,确认不同的页面之间的Session ID是否相同。
2。改用URL Session.
默认情况下,浏览器端的Session ID保存在Cookies中,如果Cookies被禁用,或者IE存在问题,可能导致ASP.NET不能识别Session.
建议您使用URL Session, 这样浏览器端的Session ID 会被包括在URL中,跟浏览器端的Cookie没有关系:
到开Web.config, 修改<sessionState>, 把cookieless设置为true. 这样,浏览器端就不再使用cookies来保存SessionID, 您可以在URL中观察到对应的Session ID.
3。在合适的地方设置断点,然后通过QuickWatch, 来确认您的程序的执行逻辑,并通过QuickWatch来监视Session变量的值。
希望上面的信息对您有所帮助。
-微软全球技术中心
IE中:
有效的窗品包括
1.Session对象只在建立Session对象的窗口中有效。
2.在建立Session对象的窗口中新开链接的窗口
无效的窗口包括
1.直接启动IE浏览器的窗口
2.不是在建立Session对象的窗口中新开链接的窗口