为什么不能只破坏一个会话

时间:2011-07-13 11:29:19

标签: c# .net asp.net performance session

问:

我知道要销毁所有会话,我可以使用:

Session.Abandon()

根据我的question.

但为什么没有任何等效方法只能销毁一个会话。我应该使用

Session.Remove("varName")

而不是。

3 个答案:

答案 0 :(得分:7)

首先,您谈论的是会话变量,而不是会话。每个用户都有一个会话和一个Session对象,您可以在其中存储多个变量。

当前请求完成后,您使用Session.Abandon放弃会话,这将删除Session对象。

您使用Session.Remove方法从Session对象中删除一个变量。

答案 1 :(得分:1)

Session.Clear()将从会话状态集合中删除所有项目,而Session.Remove(<item name>)将仅从集合中删除一个项目并保留其余项目。 Session.Abandon()将破坏整个会话并开始新的会话。

答案 2 :(得分:1)

您在会话和会话变量之间出错了。查看站点的用户仅分配了1个会话,在此1个会话对象中,您可以存储许多会话变量。

Session.Abandon将删除已连接用户的当前会话。

Session.Remove将删除您提到的特定会话变量。

Session.Clear将删除会话的所有会话变量,但不会删除会话。


请参阅以下链接以了解会话及其用法:

CodeProject: Exploring Session in ASP.NET

ASP.NET Session State

ASP.NET Session state overview