会话变量清除方法只会清除当前的浏览器会话?

时间:2015-07-06 09:01:50

标签: asp.net .net login session-variables session-state

以下会话变量清除方法用于注销单击

if {} else if {} else {}

如果我在两个浏览器中打开我的网站并从一个浏览器注销。会话变量没有在第二个浏览器中清除。所以它没有重定向到注销。

上述方法只会清除当前浏览器会话变量吗?删除所有浏览器会话的有效方法是什么?

2 个答案:

答案 0 :(得分:2)

通常,当两个浏览器连接到您的网站时,会有两个不同的会话将被实例化。每个会话中的信息独立于所有其他会话。因此,当您删除/清除会话时,只会影响当前会话。

要销毁所有会话,假设您正在使用InProc模式进行会话状态(还有其他模式=> https://msdn.microsoft.com/en-us/library/ms178586(v=vs.140).aspx),您可以通过重新启动应用程序池来销毁所有会话。有some examples on MSDN site

        ServerManager serverManager = new ServerManager();
        ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
        foreach (ApplicationPool applicationPool in applicationPoolCollection)
        {
            //...
            applicationPool.Recycle();
            //...
        }
        // CommitChanges to persist the changes to the ApplicationHost.config.
        serverManager.CommitChanges();

P / s:ServerManager类驻留在Microsoft.Web.Administration包中。不应在注销事件中实现此行为。

还可以选择重新启动应用程序池

  • 修改web.config文件
  • 升级新的.dll文件
  • 使用IIS管理器

答案 1 :(得分:0)

嗨,如果你使用的是母版页,那么在页面回页中不使用此代码



var myRevealingModule = (function () {

        var privateCounter = 0;

        function privateFunction() {
            privateCounter++;
        }

        function publicFunction() {
            publicIncrement();
        }

        function publicIncrement() {
            privateFunction();
        }

        function publicGetCount(){
          return privateCounter;
        }

        // Reveal public pointers to
        // private functions and properties

       return {
            start: publicFunction,
            increment: publicIncrement,
            count: publicGetCount
        };

    })();

myRevealingModule.start(); 




所以这里会话objuser是你当前的用户会话.. 如果没有使用母版页,那么直接把这个代码放在你的登录中就不是回发。 我已经检查了两个浏览器的工作正常。