从类访问属性时的NULL引用

时间:2014-05-04 15:59:30

标签: c#

我有以下课程:

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;

任何帮助将不胜感激

2 个答案:

答案 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)]添加到我的网络方法中,它现在正在工作。感谢大家的回应。