查询有关asp.net中的会话

时间:2011-04-04 17:06:30

标签: c# asp.net session

在我的Web应用程序中,我使用会话来存储用户特定数据,以便在回发之间保留数据。

我想知道将会话中的数据存储为

之间的区别
Session["selectedItem"] = somevalue;

Session["UserName"]["SelectedItem"] = somevalue;

我有一个名为Session [“UserName”]的会话,它存储了登录用户的名字。

如果我进入更深入的话,可以说如果有2个用户登录到firefox和其他Internet Explorer,如果我以第一种方式存储值意味着会话数据被覆盖或共享会有任何冲突,并且如果我以第二种方式使用会话,这个冲突就会得到解决。

在这两个会话实现之间存储会话变量的方式是否存在明显差异,或者它们是否完全相同?

4 个答案:

答案 0 :(得分:4)

根据定义,存储在会话中的数据是针对特定用户存储的 - 无论您的用户是否经过身份验证,它都能正常工作(如果您的用户是匿名用户,服务器仍将在用户的浏览器中设置cookie具有用户会话的唯一ID。)

会话对象提供了一个简单的一维集合来存储数据,这意味着您只能通过提供单个密钥来存储会话中的数据,例如

Session["myKey"] = myObject;

当然,如果myObject是一个数组或另一个集合,那么你可以在myObject中引用元素,如下所示:

Session["myKey"][0];
Session["myKey"]["anotherKey"];

答案 1 :(得分:3)

会话对每个用户都是唯一的,因此无需按用户键入会话变量。

答案 2 :(得分:0)

会话通常通过cookie与特定浏览器绑定,并与其他会话隔离。

答案 3 :(得分:0)

希望以下几点明确你的疑虑

  1. 使用不同浏览器时,您将获得新的会话/会话ID
  2. 如果您使用相同的浏览器(标签或多个实例),并且您的会话设置为使用Cookie,则默认Cookie将在浏览器的所有标签和/或实例之间共享
  3. 如果您在使用同一浏览器时想要不同的会话,则需要使用无Cookie会话。