当Session.Abandon()不起作用时,如何以编程方式结束asp.net中的会话?Session.Abandon()似乎没有做任何事情。您可能希望在调用Session.Abandon()时触发Session_end事件。这很可能是因为您的SessionMode不是InProc(唯一检测会话何时结束的东西)。引用自MSDN:SessionEventsASP.NET提供了两个事件来帮助您管理用户会话。Session_OnStart事件在启动新会话时引发,而Session_OnEnd事件在会话被放弃或过期时引发。会话事件在ASP.NET应用程序的Global.asax文件中指定。如果会话模式属性设置为InProc(默认模式)以外的值,则不支持Session_OnEnd事件。Session.Abandon()是结束会话的方法。你有什么问题?如果它与后退按钮相关,那就是一个完全不同的问题(该页面不会在Backback上回发,而是从客户端缓存运行一个,因此不会执行服务器端方法)。此外,Session_End也有问题。它只会在使用InProc会话时触发Session.Abandon(),因此如果您使用其他会话模式,则不能依赖它。否则,Session_End将在达到SessionTimeout时触发(默认情况下为20分钟,我相信,在Web.Config中配置)。您是否尝试过使用以下设备?System.Web.Security.FormsAuthentication.SignOut();这将清除用于表单身份验证的cookie,但可能不是您要查找的内容。您可能需要在Session.Abandon()的附加中使用它这篇文章讨论了会话何时结束:http://www.highoncoding.com/Articles/108_When_is_Session_End_Called__.aspx如果会话似乎持续存在,您可以尝试(在web.config中):这取决于,如果您的应用程序位于2个服务器上:1个WebApplication有自己的会话,第二个WS或WCF应用程序也有自己的会话,它在我的应用程序状态下工作。如果您是这种情况,则会话必须在第二点结束,超时发生在第一点结束时。至少您必须使用令牌并保留活动会话的令牌列表。可能是你的情况。祝你好运。附言。要终止会话,请在第二台服务器中管理它。以上是C#学习教程:Howtoprogrammaticallyendasessioninasp.netwhenSession.Abandon()doesnotwork?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
