我有一个应用程序,其中我为登录屏幕添加了“记住我”功能。 我通过在用户第一次登录时创建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。
我是因为这个而得到错误......还是有其他原因?
谢谢
答案 0 :(得分:6)
假设它是导致问题的最后一行,这表明HttpContext.Current
或HttpContext.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。