Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类实例未保存到HttpContext_C#_Asp.net - Fatal编程技术网

C# 类实例未保存到HttpContext

C# 类实例未保存到HttpContext,c#,asp.net,C#,Asp.net,我正在编写一个web应用程序,它使用表单身份验证,根据用户登录的时间在用户之间共享消息。我使用一个名为CurrentUser的类来存储当前用户的信息。我需要每个访问者都有自己的此类实例,我正试图将其放置在HttpContext.Current.Items中。这是我的班级: public class CurrentUser { public DateTime JoinRoomTime; public static CurrentUser Instance {

我正在编写一个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
。在调试过程中,我发现对
实例的每次引用都会调用
项[“实例”]=new CurrentUser()
。为什么不保存到
HttpContext.Current.Items

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


新请求中的引用的含义?是每个请求,它是当前请求的
HttpContext
。当发出新请求时,它将重新初始化。

HttpContext.Current的作用域为单个HTTP请求。与之关联的数据在请求之间不会持久。

为什么不直接使用会话?我有一种感觉(不是100%确定),HttpContext只在请求的长度上有效,而不是会话的长度。