问一个老问题:Session_End事件

myhid 2009-03-20 01:10:39
我想问一下哪些情况会执行Session_End
1,服务器IIS重启
2,服务器关机重启
3,服务器断电关闭


我问的是服务器啊,不是客户端。
...全文
281 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
terry 2009-03-24
  • 打赏
  • 举报
回复
学习。
datahandler2 2009-03-23
  • 打赏
  • 举报
回复
测试下不就胜于雄辩和依赖。
个人觉得都不会。哈哈,我还没测试过。不过推测下应该就知道了-------------假如站点的访问量非常高。那服务器在IIS重启或关机等不是要执行非常久的Session_End
我是觉得Session的生存周期与IE浏览器有关。全部浏览器都关闭了这个站点的 Session才会结束。
叶子 2009-03-23
  • 打赏
  • 举报
回复
个人认为Session_End还是需要的,从某种角度上来说,unload也是靠不住的,比如突然断电,但在这种情况下Session_End还是会执行的.既然Session_End在某种情况下可能不被执行,那么unload时就提醒执行就好了.

来源:http://www.zj-blog.com/html/2006/12/200612071455072145.htm
叶子 2009-03-23
  • 打赏
  • 举报
回复
一般sp1234给出的答案都是有理论依据的!

benbirdar 2009-03-23
  • 打赏
  • 举报
回复
mark
zzxap 2009-03-23
  • 打赏
  • 举报
回复
sp1234你说话要负责任啊。。出来解析一下
pgameli 2009-03-23
  • 打赏
  • 举报
回复
我就是想知道为什么出现以上服务器端的情况为什么还不执行session end
为什么
为什么
为什么

pgameli 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 liucfy 的回复:]
以上都不会。
Session_End是在一次会话结束后调用,例如你打开该网站一个页面然后关掉,就会触发Session_End事件。或者会话超时也会调用。
[/Quote]
这位仁兄
你连内容都没看全,就开始扯了

建议你以后回复的时候看清问题
benbirdar 2009-03-23
  • 打赏
  • 举报
回复
帮顶
liucfy 2009-03-23
  • 打赏
  • 举报
回复
以上都不会。
Session_End是在一次会话结束后调用,例如你打开该网站一个页面然后关掉,就会触发Session_End事件。或者会话超时也会调用。
pgameli 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 zzxap 的回复:]

session end有一个时间间隔的,时间到了就会end
[/Quote]
可是服务器关了怎么不session end
一楼说不会
到底为什么
我觉得应该会关啊
zzxap 2009-03-23
  • 打赏
  • 举报
回复

session end有一个时间间隔的,时间到了就会end
zzxap 2009-03-23
  • 打赏
  • 举报
回复
1,服务器IIS重启
2,服务器关机重启
3,服务器断电关闭
都会session end吧
pgameli 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sp1234 的回复:]
都不会。
[/Quote]
为什么不会?
具体情况是什么啊
bsetsail 2009-03-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 myhid 的回复:]
还有我发现,就是当我浏览器不关闭,即时session已经失效了,
但是当我再请求的时候发现原来的那个Session.Sessionid还在,还和以前的那个一样
这是为什么?
[/Quote]
Seesion.SessionID是在打開瀏覽器的時候創建的,在瀏覽器沒有關閉的情況下都是相同的,除非手動用代碼去清除
fffff_1982 2009-03-23
  • 打赏
  • 举报
回复
cache 的问题,
清除缓存。
myhid 2009-03-20
  • 打赏
  • 举报
回复
还有我发现,就是当我浏览器不关闭,即时session已经失效了,
但是当我再请求的时候发现原来的那个Session.Sessionid还在,还和以前的那个一样
这是为什么?
myhid 2009-03-20
  • 打赏
  • 举报
回复
谢谢楼上

另外还有一个不解:
我有一个网站当客户端登录后把sessionid信息记录到数据库,并且标记status=1

webcofnig里有这么一句:
<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="120"/>


我的session_end事件里写了清除session并且把数据库的status更新为0表示已离线。

现在我的问题是我在session_end加了个断点,二分种不请求服务器,但是发现status已经被更新为0了,但是却没有进入断点??
这是怎么回事?如果我在2分钟内不请求服务器,那么服务器是怎样管理这个已经失效的session的,按理说应该是执行了session_end才会把status更新为0的,可是为什么没的进入断点???



  • 打赏
  • 举报
回复
都不会。

62,046

社区成员

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

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

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

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