类实例未保存到HttpContext

时间:2015-07-03 01:58:03

标签: c# asp.net

我正在使用表单身份验证编写Web应用程序,该身份验证根据用户登录的时间在用户之间共享消息。我使用名为CurrentUser的类来存储当前用户的信息。我需要每个访问者拥有自己的这个类的实例,并且我试图将它放在HttpContext.Current.Items中。这是我的班级:

public class CurrentUser
{
    public DateTime JoinRoomTime;

    public static CurrentUser Instance
    {
        get
        {
            IDictionary items = HttpContext.Current.Items;

            if (!items.Contains("TheInstance"))
            {
                items["TheInstance"] = new CurrentUser();
            }

            return items["TheInstance"] as CurrentUser;
        }
    }

    public CurrentUser()
    {
        JoinRoomTime = DateTime.Now.ToUniversalTime();
    }
}

每次引用CurrentUser.Instance.JoinRoomTime时,都会调用构造函数,重置JoinRoomTime。调试时,我发现每次对items["TheInstance"] = new CurrentUser()的引用都会调用Instance。为什么不保存到HttpContext.Current.Items

2 个答案:

答案 0 :(得分:1)

  

每当我引用CurrentUser.Instance.JoinRoomTime时,都会调用构造函数,重置JoinRoomTime。

意思是,在请求中引用? HttpContext.Current是按请求,当前请求的HttpContext 。在发出新请求时会重新初始化。

答案 1 :(得分:1)

HttpContext.Current的范围限定为单个HTTP请求。与之关联的数据不会在请求之间保留。