【问题标题】:Session in asp.net/c#asp.net/c中的会话#
【发布时间】:2011-07-16 18:51:33
【问题描述】:

我想知道两者的区别

Session.clear();

Session.Abandon();

Session.RemoveAll();

请解释我在退出会话时遇到的不同之处。

谢谢你的期待

【问题讨论】:

  • 这个答案太技术性了,没有讨论实际方面的意义,什么时候应该使用 session.clear(),什么情况下应该使用 session.abandon() 和 session.removeall()。仅仅给出定义不会被认为是一个答案,这对任何人都没有冒犯。我们还应该考虑用户是否是新手以及答案的清晰程度。感谢您指出相似之处。
  • 这是一个面向程序员的网站。如果您无法理解技术性答案,这可能不适合您。投票结束作为重复。
  • 但是没有解释 session.removeall 并且没有讨论使用的实用性,所以认为提出一个新问题会消除一些模棱两可
  • RemoveAllClear 相同,因为RemoveAll 调用Clear。它的存在只是为了处理遗留代码。为此,您的问题正是 Duplicated 提出/回答的问题!

标签: asp.net session


【解决方案1】:

Clear()RemoveAll() 执行相同的操作:删除会话变量 但将当前会话保留在内存中。而 Abandon() 结束当前 会话。

【讨论】:

  • 删除会话变量并将当前会话保留在内存中是什么意思?删除会话变量与删除会话不同吗?能详细解释一下吗?
  • 这不是一回事。将会话视为存储桶,将会话变量视为存储桶中的项目。 Clearing 只会移除存储桶中的项目,不会移除存储桶。 Abandon 移除存储桶。
  • @Greg 那是我能想到的最好的解释之一!非常感谢
【解决方案2】:

Session.Clear() 删除对象中的所有内容(值)。具有相同密钥的会话仍然存在。

Session.Abandon() 销毁会话并触发 Session_OnEnd 事件。如果您使用它,您将失去会话并获得新的会话密钥。考虑将其与“注销”一起使用

Session.RemoveAll() 与 Clear() 一样,此方法删除所有已添加到 Session 对象的 Contents 集合中的项目。

【讨论】:

  • 您能不能说一下为什么在注销时需要一个新的会话密钥?
  • 所以如果我在注销时使用 session.removeall() 用户下次不能登录吗?
  • 因为它将释放会话状态对象及其在服务器上的项目,以便它们可以被垃圾收集。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 2012-05-07
  • 2016-06-20
相关资源
最近更新 更多