当从类访问属性时,引用为NULL

本文关键字:引用 NULL 属性 访问 | 更新日期: 2023-09-27 18:01:41

我有以下类:

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;

如有任何帮助,不胜感激

当从类访问属性时,引用为NULL

似乎这一定是引起问题的行:

_user = DLL.Security.GetUserByGuid(System.Web.HttpContext.Current.Request.Cookies["UID"].Value.ToString());

在那一行中,除了"Request.Cookies["UID"],似乎没有任何东西可以为空。如果我第一次访问您的站点,我不希望设置"UID",所以如果您第一次请求该页面,您将获得NullReferenceException,这是有意义的。

事实证明,由于我调用该方法试图从web服务访问AppUser类,因此它没有启动会话。我添加了[WebMethod (EnableSession = true)]到我的web方法,它现在正在工作。感谢大家的回复。