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