Session的生命周期,为什么关闭浏览器Session还在?

zds835 2005-08-28 07:24:17
为什么关闭浏览器Session还在?我在页面里要判断色session的值,关闭浏览器,重新打开IE是正常的(session没有值)。但是如果把页面保存在桌面上,再打开session已经在了。难道每次都要重新打开IE输入地址才行?(顺便问一下对于同一个session可以多次赋值吧?)
...全文
4364 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdong002 2005-10-03
  • 打赏
  • 举报
回复
楼上提到:“你的“36的24次方分之一”不妨实际试试,设置为1分钟。你每次间隔58秒访问,看看是否“经常”丢?”

我觉得不是“经常”丢,而是一定。
所以我反对,但你不妨在每次设置的时候都清一下,再设置,丢的可能就不会出现了。

我想是因为TimeOut是1分钟,而用去58秒,还差2秒你只是“设置”(只是赋值),当然不能起作用。所以必丢了。但清了之后再设置,则不然。
syeerzy 2005-09-29
  • 打赏
  • 举报
回复
虽然帖子已经结了,不过有必要澄清一些问题,我说的和ybzsu说的其实没有冲突:
1,Session有时候有有时候没有是事实,原因是一个bug。我们一个从事实走一个从理论走,得到不同结果。
2,ybzsu说的是在IE浏览器中的情况,不代表所有浏览器都一样,不过有一点,我说漏了,就是我说的“有时候有时候”是指针对不同的情况(比如ybzsu说的还有一个IE窗口没关,比如时间),搂主对同一事情的多次重复一般会出相同结果。 是我没说清楚产生误导,我道歉。
3,我说的“服务器和客户端都保存”,其实在客户端是默认作为cookie保存的,除非在webconfig中重新设置过。不信请试试不要设置webconfig,禁用cookie,看看Session有没有用。
4,“至于syeerzy说的没timeout也消失的情况几乎没可能”,我在上面并没有说“没timeout也消失”,我说的是“没有达到timeout属性规定的时间”不是“没timeout”。事实上timeout的具体时间是不固定的,和webconfig中规定的时间并不一致。 你的“36的24次方分之一”不妨实际试试,设置为1分钟。你每次间隔58秒访问,看看是否“经常”丢?这是一个bug,虽然在1分钟的时候丢的纪律并不太大,不过远大于你说的值。如果是30分钟,丢就是“经常”的了。
ybzsu 2005-09-07
  • 打赏
  • 举报
回复
严重不同意syeerzy的看法
session绝对不是“有时有有时没有”的!session是服务端创建的,分配一个sessionid,然后“告诉”给客户端,而客户端在每次访问的时候都会把这个session信息放到http头中发送出去,在服务端有个session列表,存了所有的session的相关信息,包括session的timeout信息,所以,在你关了浏览器后在重新打开的时候你的浏览器已经不知道什么session了,所以他就不会发送了,但是服务器端在没timeout和主动去撤消只前是不会消失的。至于你保存然后打开,session还在我觉得是不可能的(除非你还有IE没关,只要一个IE没关,所有的session都还在),因为保存的时候是不会保存这种“临时cookie”的。至于syeerzy说的没timeout也消失的情况几乎没可能(可能性为36的24次方分之一)也就是IIS把cookieid分配给了别人,还有一种可能就是破坏了IIS进程

csc5lover 2005-09-07
  • 打赏
  • 举报
回复
清理Session
Session.RemoveAll();
试试。
zds835 2005-08-28
  • 打赏
  • 举报
回复
session不是以浏览器的打开为开始计时生存周期的吗?你说的:“关闭再打开不在了,保存再打开还在,是一种偶然现象,正确的答案是“有时候在有时候不在”,可我每次重新打开(在地址栏输入地址)每次都正常的啊。如果session不是以浏览器的打开为开始计时生存周期。那和cookie有什么区别呢?
syeerzy 2005-08-28
  • 打赏
  • 举报
回复
Session在服务器和客户端各保留一个副本。 没有任何资料告诉你关了浏览器它就不在,他本来就和关不关浏览器没关系。

你说的关闭再打开不在了,保存再打开还在,是一种偶然现象,正确的答案是“有时候在有时候不在”,并不是你说的这样就一定在那样就一定不在,不信你可以多试几种情况。Session和关不关浏览器没必然联系,你试试浏览器不要关,今天晚上睡觉前打开,明天早上起床看看它在不在?呵呵。

对同一个Session你想赋值多少次都行。


Session丢失的主要原因2个:1是程序中主动清空,2是没有访问的时间太长。(怎么算长怎么算短,以web.config中的超时时间为对比,但不是长了一定不见,短了一定在,而是几率问题,长的越多,丢的机会越大,短的越多,丢的机会越小)

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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