我有以下课程:
public static class AppUser
{
public static int TestNum
{
get { return 999; }
}
public static BO.User User
{
get
{
BO.User _user;
_user = (BO.User)System.Web.HttpContext.Current.Session["User"];
if (_user == null)
{
_user = new BO.User();
_user = DLL.Security.GetUserByGuid(System.Web.HttpContext.Current.Request.Cookies["UID"].Value.ToString());
System.Web.HttpContext.Current.Session["User"] = _user;
}
return _user;
}
}
}
在aspx页面的代码隐藏中,这两行都可以正常工作:
Response.Write(BLL.BO.AppUser.TestNum.ToString() + "<br>");
Response.Write(BLL.BO.AppUser.User.ID.ToString());
在课堂上,这一行有效:
int t = BLL.BO.AppUser.TestNum;
但是以下行给了我一个空引用:
BLL.BO.User u = BLL.BO.AppUser.User;
任何帮助将不胜感激
答案 0 :(得分:0)
似乎这必须是导致问题的一线:
_user = DLL.Security.GetUserByGuid(System.Web.HttpContext.Current.Request.Cookies["UID"].Value.ToString());
而且,除了“Request.Cookies [”UID“]之外,似乎没有任何东西可以为null。如果我第一次访问你的网站,我不希望设置”UID“但是,如果您是第一次请求页面,那么您将获得NullReferenceException是有道理的。
答案 1 :(得分:0)
事实证明,由于我正在尝试从Web服务访问AppUser类,因此它不会启动会话。我将[WebMethod(EnableSession = true)]添加到我的网络方法中,它现在正在工作。感谢大家的回应。