我在与设置位置不同的页面上检索会话变量时遇到问题。会话变量包含一个用户类对象,该对象类包含当前用户的大约15种不同的用户属性。
我需要在所有页面上都可用,并且不想每次我进入页面时都重新查询数据库。在我的default.aspx
上,我有以下代码在page_init
protected void Page_Init(object sender, EventArgs e)
{
// Get the logged in user id with acct domain (ie. acct05\abc123)
masterNtId = Request.ServerVariables["LOGON_USER"].ToString();
// Get the logged in user id (ie. abc123)
masterNtID_short = masterNtId.Substring(masterNtId.IndexOf("\\") + 1);
// Get the current page (ie. /PMM/page_name.aspx)
UserObject user = TheUser.User.SearchUserWhitePages(masterNtID_short);
Session["UserProfile"] = user;
//Added to test that session is being set
UserObject theuser = (UserObject)Session["UserProfile"];
string name = theuser.get_UserName();
}
它成功返回会话变量。但是,当我在从default.aspx导航的另一页上添加以下代码时,也会出现此错误
“发生了类型为'System.NullReferenceException'的异常”
protected void Page_Load(object sender, EventArgs e)
{
UserObject theuser = (UserObject)Session["UserProfile"];
string name = theuser.get_UserName();
}
我在aspx页面上设置了EnableSessionState = True
。我不确定要忘记做什么。我应该对会话状态变量进行不同的设置吗?