即使对象不为null,也会出现对象引用错误

时间:2010-05-27 08:34:46

标签: c# asp.net session

我有一个应用程序,其中我为登录屏幕添加了“记住我”功能。 我通过在用户第一次登录时创建cookie来实现此目的,因此下次当用户访问网站时,我会获取cookie并加载用户信息。

我编写了用于在App_Code文件夹中的公共类中加载用户信息的代码...并且我的所有页面都继承自此类。

加载用户信息的代码如下:

public static void LoadUserDetails(string emailId)
{
    UsersEnt currentUser = UsersBL.LoadUserInfo(emailId);

    if (currentUser != null)
        HttpContext.Current.Session["CurrentUser"] = currentUser;
}

现在问题是,当我尝试将currentUser对象存储在会话变量中时,我得到一个“对象引用”错误(即使currentUser对象不为null)。但是,currentUser对象中的password属性为null。

我是因为这个而得到错误......还是有其他原因?

谢谢

3 个答案:

答案 0 :(得分:6)

假设它是导致问题的最后一行,这表明HttpContext.CurrentHttpContext.Current.Session为空。我建议你找出它是什么,然后找出原因。

答案 1 :(得分:2)

HttpContext.Current.Session可能为null。

使用State的代码必须在AcquireRequestState事件调用后放置。有关详细信息,请参阅page lifecycle

尝试将您的代码放在Page_Load方法之后或之内。

答案 2 :(得分:0)

如果它在行上抛出异常:

HttpContext.Current.Session["CurrentUser"] = currentUser;

然后唯一的另一个解释是HttpContext.Current.Session为null。