我的网站 Session["name"]、Session["lastname"] 和 Session["username"] 中有 3 个活动会话,Session.Abandon() 会放弃所有这些吗?
3 回答
实际上,您有一个活动会话(不是三个)。该会话具有与之关联的这三个键/值对。
是的,一旦当前页面的处理完成,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()
是的,对象将被销毁,但不会立即销毁(来自msdn)
调用 Abandon 方法时,当前 Session 对象排队等待删除,但直到当前页面上的所有脚本命令都处理完后才真正删除。这意味着您可以在调用 Abandon 方法的同一页面上访问存储在 Session 对象中的变量,但不能在任何后续网页中访问。
它是一个会话和 3 个变量。如果您需要尽快删除它们,请将它们指向null并且数据将立即成为 GC 的主题(这不是确定性的)。
Session["name"] = null;
Session["lastname"] = null;
Session["username"] = null;
是的,它会销毁存储在 Session 对象中的所有对象并释放它们的资源。