销毁会话和删除其值有什么区别?您能提供一个例子来证明这一点吗?
我搜索了这个问题,但没有掌握完整的答案。一些答案是:
-
Session.Abandon()
破坏会话
-
Session.Clear()
只是删除所有值
一位朋友告诉我这样的事:
清除会话不会重置
会话,它仍然存在
用户的 ID 相同,但带有
值被简单地清除。
放弃将破坏会话
完全,这意味着你需要
在此之前开始新的会话
在会话中存储更多值
对于该用户。
下面的代码可以工作并且不会抛出任何异常。
Session.Abandon();
Session["tempKey1"] = "tempValue1";
当您 Abandon() 会话时,您(或
相反,用户)将得到一个新的
会话ID
当我测试会话时,当我放弃会话时它不会做出任何更改。
我只发现一处不同:session.Abandon()
raises Session_End
event
Clear- 从会话状态集合中删除所有键和值。
Abandon- 删除会话中存储的所有对象。如果不显式调用 Abandon 方法,服务器会在会话超时时删除这些对象并销毁会话。
它还引发了类似的事件会话结束.
Session.Clear 可以与从书架上移走所有书籍,而 Session.Abandon 更像是扔掉整个架子.
You say:
当我测试会话时,当我放弃会话时它不会做出任何更改。
当你这样做时这是正确的仅在一次请求内.
在下一次请求时,会话将有所不同。但是会话ID可以重复使用这样 id 将保持不变。
如果您将使用 Session.Clear,您将在许多请求中拥有相同的会话。
一般来说,大多数情况下您需要使用Session.Clear。
如果您确定用户将离开您的站点,则可以使用 Session.Abandon。
回到差异:
- 放弃引发 Session_End 请求。
- 清除会立即删除项目,而放弃不会。
- 放弃会释放 SessionState 对象及其项目,以便它可以进行垃圾收集以释放资源。 Clear 保留 SessionState 和与其关联的资源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)