1

我的网站 Session["name"]、Session["lastname"] 和 Session["username"] 中有 3 个活动会话,Session.Abandon() 会放弃所有这些吗?

4

3 回答 3

4

实际上,您有一个活动会话(不是三个)。该会话具有与之关联的这三个键/值对。

是的,一旦当前页面的处理完成,Session.Abandon() 将在放弃会话的过程中删除所有这些变量。

一旦调用了 Abandon 方法,当前会话就不再有效,可以开始一个新的会话。

http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.abandon.aspx

调用 Abandon 方法时,当前 Session 对象排队等待删除,但直到当前页面上的所有脚本命令都处理完后才真正删除。这意味着您可以在调用 Abandon 方法的同一页面上访问存储在 Session 对象中的变量,但不能在任何后续网页中访问。

http://msdn.microsoft.com/en-us/library/ms524310(v=vs.90).aspx

更新

如果您想在页面完成执行之前“摆脱”键/值对,您可以像这样清除它们:

Session.Contents.RemoveAll()

http://msdn.microsoft.com/en-us/library/ms524866(v=vs.90 )

于 2012-07-25T15:50:55.083 回答
0

是的,对象将被销毁,但不会立即销毁(来自msdn

调用 Abandon 方法时,当前 Session 对象排队等待删除,但直到当前页面上的所有脚本命令都处理完后才真正删除。这意味着您可以在调用 Abandon 方法的同一页面上访问存储在 Session 对象中的变量,但不能在任何后续网页中访问。

它是一个会话和 3 个变量。如果您需要尽快删除它们,请将它们指向null并且数据将立即成为 GC 的主题(这不是确定性的)。

Session["name"] = null;
Session["lastname"] = null;
Session["username"] = null;
于 2012-07-25T15:51:11.770 回答
0

是的,它会销毁存储在 Session 对象中的所有对象并释放它们的资源。

于 2017-05-02T06:33:55.153 回答