Session 清除

gisdreamfly 2009-08-27 04:43:17
想问下用户在退出系统(点x)后Session会立刻清除吗?

如果不行,在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去


现在是为了在刷新页面的时候不清除Session,而关闭页面后马上清除,有没好办法可以解决?

期待高手指点迷津
...全文
546 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 ralpha08 的回复:]
估计楼主是从winform转过来做web的 呵呵
[/Quote]

的确是,嘻嘻……好眼力
gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 ralpha08 的回复:]
引用 19 楼 gisdreamfly 的回复:
引用 12 楼 davidfangzhijie 的回复:
引用 5 楼 ralpha08 的回复:
引用 4 楼 gisdreamfly 的回复:
有没朋友说说

在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去


Page_Dispose并不在页面关闭的时候执行  而是在Page_Load之后执行

顶起


public override void Dispose()
    {
        base.Dispose();
    }


是在Page_Unload后运行

我是在Page_Load内打断点,逐句调试出来的,请高手确认,不要误导了新手!



楼主自己动手的精神可嘉, 但是说是在Page_Load后运行也没错, 因为Page_Unload Page_Dispose,都是在Page_Load之后运行, 告诉你在Page_Load之后运行只是想让你知道 Page_Dispose 是和Page_Load是在同一过程内执行的。 页面从构建到销毁都是在同一过程内完成的,而你之前在页面关闭的时候去看Page_Dispose 有没有执行的思想是不对的, 你这种想法是把他们独立开了。
[/Quote]

3Q,终于明白了,看来还误会5楼了,呵呵……






YuNa122 2009-08-28
  • 打赏
  • 举报
回复
Session.RemoveAll();
ralpha08 2009-08-28
  • 打赏
  • 举报
回复
估计楼主是从winform转过来做web的 呵呵
ralpha08 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 gisdreamfly 的回复:]
引用 12 楼 davidfangzhijie 的回复:
引用 5 楼 ralpha08 的回复:
引用 4 楼 gisdreamfly 的回复:
有没朋友说说

在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去


Page_Dispose并不在页面关闭的时候执行  而是在Page_Load之后执行

顶起



public override void Dispose()
    {
        base.Dispose();
    }


是在Page_Unload后运行

我是在Page_Load内打断点,逐句调试出来的,请高手确认,不要误导了新手!

[/Quote]

楼主自己动手的精神可嘉, 但是说是在Page_Load后运行也没错, 因为Page_Unload Page_Dispose,都是在Page_Load之后运行, 告诉你在Page_Load之后运行只是想让你知道 Page_Dispose 是和Page_Load是在同一过程内执行的。 页面从构建到销毁都是在同一过程内完成的,而你之前在页面关闭的时候去看Page_Dispose 有没有执行的思想是不对的, 你这种想法是把他们独立开了。
gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 davidfangzhijie 的回复:]
引用 5 楼 ralpha08 的回复:
引用 4 楼 gisdreamfly 的回复:
有没朋友说说

在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去


Page_Dispose并不在页面关闭的时候执行  而是在Page_Load之后执行

顶起

[/Quote]

public override void Dispose()
{
base.Dispose();
}


是在Page_Unload后运行

我是在Page_Load内打断点,逐句调试出来的,请高手确认,不要误导了新手!
gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 a173980067 的回复:]
在Global。asax中
C# codevoid Session_End(object sender, EventArgs e)
{//在会话结束时运行的代码。// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为// InProc 时,才会引发 Session_End 事件。如果会话模式//设置为 StateServer 或 SQLServer,则不会引发该事件。 Session.Clear();
}]
[/Quote]

怎么打上断点关闭浏览器的时候也是进不去?




gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 a173980067 的回复:]
在Global。asax中
C# codevoid Session_End(object sender, EventArgs e)
{//在会话结束时运行的代码。// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为// InProc 时,才会引发 Session_End 事件。如果会话模式//设置为 StateServer 或 SQLServer,则不会引发该事件。 Session.Clear();
}]
[/Quote]
3Q
flyerwing 2009-08-28
  • 打赏
  • 举报
回复
Session.ABANDON()
Andy__Huang 2009-08-28
  • 打赏
  • 举报
回复
学习一下
别样苍茫 2009-08-28
  • 打赏
  • 举报
回复
刷新不会清除,关闭会清除。
a173980067 2009-08-28
  • 打赏
  • 举报
回复
在Global。asax中

void Session_End(object sender, EventArgs e)
{
//在会话结束时运行的代码。
// 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
// InProc 时,才会引发 Session_End 事件。如果会话模式
//设置为 StateServer 或 SQLServer,则不会引发该事件。
Session.Clear();
}
]
davidfangzhijie 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ralpha08 的回复:]
引用 4 楼 gisdreamfly 的回复:
有没朋友说说

在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去


Page_Dispose并不在页面关闭的时候执行  而是在Page_Load之后执行
[/Quote]
顶起
gisdreamfly 2009-08-28
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shaofei830927 的回复:]
就是不知道为什么这样写  难道这个网站你就只打开这一个页面 或者 访问你的网站的时候不能关闭已经打开的所有的页面  防止session被清空
[/Quote]

是用户关闭本地浏览器的时候,清空服务器上的Session,而非本地^
wuyq11 2009-08-27
  • 打赏
  • 举报
回复
Session.Clear();
Session.Abandon();

if (Session["UserName"] != null)
{
Session.Remove("UserName");
Session.RemoveAll();
Response.Cookies["UserName"].Expires = DateTime.Now;
}
Page.RegisterStartupScript("","<script>window.top.document.location.href='index.aspx';</script>");
shaofei830927 2009-08-27
  • 打赏
  • 举报
回复
就是不知道为什么这样写 难道这个网站你就只打开这一个页面 或者 访问你的网站的时候不能关闭已经打开的所有的页面 防止session被清空
shaofei830927 2009-08-27
  • 打赏
  • 举报
回复
page页中没有提供关闭页面所执行的方法 可以用js unload 来做 当unload的时候 模拟点击某个服务器端按钮
document.getElementById('按钮ID').click

该按钮事件中写清空session
可能行得通
wangjihong83 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 randomfeel 的回复:]
可以在Global.asax里写代码清空
[/Quote]
试过.可以
myljg 2009-08-27
  • 打赏
  • 举报
回复
如果直接关闭浏览器,什么都不会执行!
别忘记WEB应用程序的无状态性!
ralpha08 2009-08-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 gisdreamfly 的回复:]
有没朋友说说

在Page_Dispose事件里填写
Session.Clear()
会执行这句代码吗?我在这里打了断点,关闭的时候没进去
[/Quote]

Page_Dispose并不在页面关闭的时候执行 而是在Page_Load之后执行
加载更多回复(4)

62,025

社区成员

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

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

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

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