2012-07-25 60 views
0

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

回答

2

其实,你有一个活动会话(不是三个)。该会话具有与它关联的那三个键/值对。

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

一旦放弃方法被调用,当前会话不再有效,并且可以启动新的会话。

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

当Abandon方法被调用时,当前的Session对象排队等待删除,但实际上并没有被删除,直到所有的脚本都已经被处理了当前页面上的命令。这意味着您可以访问与放弃方法调用相同的页面中存储在Session对象中的变量,但不能访问任何后续Web页面中的变量。

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

UPDATE

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

Session.Contents.RemoveAll() 

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

+0

谢谢,这是有用的:) – Katerina 2012-07-25 15:53:31

+1

很高兴帮助:-)。欢迎来到Stack Overflow。请记住对您的问题进行回复和/或接受好的答案。 – 2012-07-25 15:54:35

0

是的,对象就会被破坏,但没有立即(从msdn

当Abandon方法被调用时,当前的Session对象是 排队等待删除,但实际上并没有被删除,直到所有的 脚本命令在当前页面上已经被处理。这意味着 ,您可以访问存储在会话对象中的变量,在与放弃方法调用相同的 页面上访问变量,但不能访问任何后续Web页面中的变量。

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

Session["name"] = null; 
Session["lastname"] = null; 
Session["username"] = null; 
+0

有什么我可以做的放弃它们,就像我不能访问存储在与放弃的调用相同的页面上的Session对象中的变量? – Katerina 2012-07-25 15:55:21

+0

@Katerina:是的,你可以。查看我的答案更新。 – 2012-07-25 15:58:27

+0

@EricJ。再次感谢你 :) – Katerina 2012-07-25 16:01:45

0

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