asp.net - session变量清除方法只会清除当前浏览器session吗?

标签 asp.net .net authentication session-variables session-state

注销点击使用以下session变量清除方法

Session.Clear(); 
Session.RemoveAll();
Session.Abandon();

如果我在两个浏览器中打开我的网站并从一个浏览器注销。 session 变量不会在第二个浏览器中清除。因此它不会重定向到注销。

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

最佳答案

一般来说,当两个浏览器连接到你的网站时,会有两个不同的 session 被实例化。每个 session 中的信息都独立于所有其他 session 。因此,当您删除/清除 session 时,只有当前 session 会受到影响。

要销毁所有 session ,假设您正在为 session 状态使用 InProc 模式(还有其他模式 => https://msdn.microsoft.com/en-us/library/ms178586(v=vs.140).aspx),您可以通过重新启动应用程序池来销毁所有 session 。有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 管理器

关于asp.net - session变量清除方法只会清除当前浏览器session吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31241673/

相关文章:

c# - 如何将数据表存储在缓存中以重用它?

c# - 当类继承自 Exception 时,BinaryFormatter 不会序列化公共(public)字段,为什么?

c# - FileStream.Write() 抛出 OutOfMemoryException 的可能原因?

c# - 确定 WCF SOAP UserNamePasswordValidator 中客户端的 IP 地址

scala - 如何使用scala和play实现安全授权?

javascript - 使用 Auth 在新选项卡中打开 PDF 文档

javascript - 单击 anchor 链接时如何在转发器中查找文本框值

javascript - 服务器标签如何在 javascript 中工作?

html - 为什么 100% 高度和 100% 宽度在我的 ASPX 页面中不起作用?

c# - 使用后台线程从 xml 文件加载内容?