刷新造成session丢失的问题

大健 2002-10-10 06:10:02
我的页面里有三个frame,上面一个,下里又分为左和右两个,如下:
<frameset rows="138,*" cols="*" framespacing="0" frameborder="no" border="0" >
<frame src="index-top.aspx" name="top" scrolling="NO" noresize>
<frameset rows="*" cols="186,757" framespacing="0" frameborder="no" border="0">
<frame src="index-left.aspx" name="left">
<frame src="index-Main.aspx" name="main" noresize>
</frameset>
</frameset>

网页可以正常使用,分别在每个frame里按鼠标右键按“刷新”都可以正常的对那frame进行刷新
问题:如果点击ie工具栏上的“刷新”按钮,马上会造成整个页面session的丢失(就是一刷新就没session)。session的维持时间为足够长。
请问怎样可以解决这个问题呢?谢谢
...全文
461 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
大健 2002-10-17
  • 打赏
  • 举报
回复
前几天才升级,现在。。。呜呜~
sunxiaoli 2002-10-14
  • 打赏
  • 举报
回复
当重新编译一遍再刷新后,就会丢session.
不编译没事的.
大健 2002-10-14
  • 打赏
  • 举报
回复
能说详细点吗?
dengjiangyang 2002-10-14
  • 打赏
  • 举报
回复
启动net start aspnet_state
大健 2002-10-14
  • 打赏
  • 举报
回复
我要在用户关闭窗口时触发某事件,请问大家一般是怎样做的呢?
zgh_ms 2002-10-11
  • 打赏
  • 举报
回复
感谢您使用微软产品。

首先,请您确认这个问题是否是由于下面的文章描述的问题导致的:

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变量的值。

希望上面的信息对您有所帮助。

-微软全球技术中心 -zgh

本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
jackyhzzjcn 2002-10-11
  • 打赏
  • 举报
回复
关于Session的问题,我以前在这里也讨论过,我觉得.Net的session机制有BUG,我用access数据库会丢失SESSION,而用SQL SERVER2K就一切正常,呵呵(排序程序清除SESSION的可能)
大健 2002-10-11
  • 打赏
  • 举报
回复
原来是逻辑上的错误。
而在这页面的unload里有一句session.abandon的语句,目的就是当用户关闭窗口是同时触发Gobal.asa里的Session_End。但当整个页面刷新的时候这unload也触发了。。。
现在的问题是,有什么方法可以判断用户到底是做关闭窗口的动作还是在“刷新”呢?
zhenchun 2002-10-11
  • 打赏
  • 举报
回复
如果还解决不了,就改用其它方法好了
大健 2002-10-11
  • 打赏
  • 举报
回复
web.config里是这样的:
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="true" timeout="2" />
我把trace设为true,把cookieless也设置为true,看到这三页的SessionId都是一样的。按F5刷新后,这Session Id也没有改变,但里面的“会话状态”却没有了,何解呢?(在每一个页里按右键刷新是没事的。)
sqhua 2002-10-10
  • 打赏
  • 举报
回复
同上
icecools 2002-10-10
  • 打赏
  • 举报
回复
应该不会吧,肯定某个地方改了
nerk 2002-10-10
  • 打赏
  • 举报
回复
可能是你的index-main.aspx或者主框架页面里面有代码重写了Session.

仔细检查你的代码。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧