c#清除会话

本文关键字:会话 清除 | 更新日期: 2023-09-27 18:01:45

问题1

我想知道什么时候应该使用:

session . abandon()//当我在跟踪期间和调用它之后使用它时,我发现会话仍然有一个值

我应该什么时候使用:

Session.Clear ()

我应该在什么时候使用每种特定的方法?


  • ?
  • 在我的具体情况下?

我检查会话是否在页面加载中不等于null。如果session等于null,我要清除session并重定向到登录页面吗?

应该这样写吗?

private void initSession()
{
    Session.Clear();
    Session.Abandon();
    Response.Redirect("LoginPage.aspx");
}

c#清除会话

什么时候我应该使用Session.Clear()而不是Session.Abandon()?

session . abandon()销毁会话Session_OnEnd事件为触发。

Session.Clear()只是删除所有值(内容)从对象。的使用相同密钥的会话仍然存在活着。

所以,如果你使用Session.Abandon(),你失去特定的会话和用户将获得一个新的会话密钥。你比如当用户日志。

使用Session.Clear(),如果你需要的话保持在同一会话中的用户(如果你不想让他重新登录。(示例)并重置他的所有会话具体数据。

Session.Abandon()和Session.Clear()有什么区别

Clear -删除所有键和值从会话状态集合中。

Abandon -删除所有对象存储在会话中。如果你没有显式地调用放弃方法,服务器删除这些对象和会话时销毁会话超时。它还引发了类似的事件Session_End .

会话。清晰可以比较把所有的书从书架上拿下来,而会话。抛弃更像是把整个架子都扔掉。

通常,在大多数情况下您需要这样做使用Session.Clear。你可以用会话。放弃,如果你确定用户将离开您的网站。

那么回到差异:

  • 放弃引发Session_End请求
  • 清除会立即移除物品,放弃不会。
  • Abandon释放SessionState对象和它的项,这样它就可以垃圾化了收集。
  • Clear保留SessionState和与之关联的资源。

Session.Clear()还是Session.Abandon() ?

在不使用Session.Clear()时使用我想结束这次会议,但是清除会话中所有的键并重新初始化会话。

Session.Clear()不会导致类中的Session_End事件处理程序全球。

但另一方面Session.Abandon()将删除会话,并将执行Session_End eventhandler。

Session.Clear()类似于删除书籍从书架

Session.Abandon()就像抛出书架本身。

如果页面加载不等于null,我会检查一些会话。如果其中一个等于null,我要清除所有会话并重定向到登录页面?

如果你想让用户再次登录,使用Session.Abandon

另一个很大的区别是,Abandon不会立即删除项目,但是当它这样做时,它会在会话项目上进行循环,以检查它需要特别处理的STA COM对象。

在高负载下,可能有两个(或更多)请求为同一个会话(即两个具有相同会话cookie的请求)向服务器发送请求。它们的执行将被序列化,但由于Abandon不会同步清除项,而是设置一个标志,因此两个请求都可以运行,并且两个请求都安排一个工作项以"稍后"清除会话。这两个工作项可以同时运行,两者都在检查会话对象,两者都在清除对象数组,当你有两个东西迭代列表并改变它时会发生什么?繁荣!由于这发生在queueuserworkitem回调中,而不是在try/catch中完成(感谢MS),它将降低整个应用程序域。去过那里。