在Session中存储对象时的会话变量问题

时间:2009-01-14 17:33:11

标签: c# asp.net

我有一个登录页面,我在其中验证我的用户,并根据此验证,我将他们的用户信息存储在会话变量中,以便我可以随时访问它。为此,我试图存储我的一个dbml生成的类“UserInfo”的实例。所以我填充了类,然后将它存储在一个名为“user”

的会话变量中
 UserInfo u = new UserInfo();
    u = dal.RetrieveUser(userID, userPass)
    Session["user"] = u;

我遇到的问题是它似乎在用户之间混淆了这些会话变量。或者更具体地说,它似乎总是从为登录的每个后续用户存储的第一个用户变量中获取信息。因此用户1的信息将被拉入用户2,用户3等...

我的问题是我的班级“UserInfo”在某种程度上是静态的吗?或者是什么导致这种情况发生?我的UserInfo类看起来像这样:

public partial class UserInfo
    {
        ...

编辑: 经过进一步审查后,似乎我的Session变量实际上工作正常但我的自定义菜单实际上是问题。

2 个答案:

答案 0 :(得分:1)

听起来更像是DAL的问题而不是会话对象。你能验证每次传递的userID是否不同,而RetrieveUser函数是使用传递的值而不是静态值?

答案 1 :(得分:0)

您是使用同一台计算机上的Web客户端还是单独的计算机对此进行测试?例如,默认情况下,即使您打开了多个窗口或选项卡,FireFox也会在单个进程中运行。听起来很傻,当我遇到同样的问题时,我的一位同事没有注意到这种现象。