当Session.Abandon()不起作用时,如何以编程方式结束asp.net中的会话?

Sli*_*lim 14 c# membership asp.net authentication session

Session.Abandon()似乎没有做任何事情.在调用Session.Abandon()时,您可能希望触发Session_end事件.

Nol*_*rin 34

这很可能是因为您SessionMode是不是 InProc(在会话结束时,能检测出只有一个).

引自MSDN:

会话事件

ASP.NET提供了两个可帮助您管理用户会话的事件.新会话启动时会引发Session_OnStart事件,并且会话被放弃或过期时会引发Session_OnEnd事件.会话事件在ASP.NET应用程序的Global.asax文件中指定.

如果会话模式属性设置为InProc以外的值(默认模式),则不支持Session_OnEnd事件.

  • @Syaz:它完全解释了为什么没有引发Session.OnEnd事件的原因!更重要的是,OP接受了它,所以我几乎认为你无法有效地争辩...... (7认同)

Ser*_*pth 11

Session.Abandon()是结束会话的方式.你遇到的问题是什么?

如果它的Back按钮相关,那是一个完全不同的问题(页面不在Backback上回发,而是从clientside缓存运行一个,因此不会执行服务器端方法).

此外,Session_End存在问题.它只会在使用InProc会话时触发Session.Abandon(),因此如果您使用的是其他会话模式,则无法依赖它.否则,Session_End将在达到SessionTimeout时触发(默认为20分钟,我相信,在Web.Config中配置).