gpt4 book ai didi

c# - ASP.NET 中请求或服务器独有的静态类实例?

转载 作者:行者123 更新时间:2023-11-30 12:19:11 25 4
gpt4 key购买 nike

 public sealed class UserLoginSingleton
{

UserLoginCollection _userLoginCol = new UserLoginCollection();

UserLoginSingleton()
{
}

public static UserLoginSingleton Instance
{
get
{
IDictionary items = HttpContext.Current.Items;
if (!items.Contains("TheInstance"))
{
items["TheInstance"] = new UserLoginSingleton();

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


public void CreateUserObj(string xmlData)
{
_userLoginCol = (UserLoginCollection)_xmlUtil.Deserialize(xmlData, typeof(UserLoginCollection));
}

public UserLoginCollection getUserObj()
{
return _userLoginCol;
}
}

用法:

第1页.aspx

UserLoginSingleton.Instance.CreateUserObj(xml);

Pase2.aspx:

UserLoginCollection userLoginCollection = UserLoginSingleton.Instance.getUserObj();

关注了这里的文章: link text

我在第 1 页设置了我的集合对象,然后执行 response.redirect 或单击链接将我转到第 2.aspx 页。但是,我的单例实例没有我设置的集合对象。我如何在每个 session 的差异页面中持久保存我的集合对象?

我知道静态的不会工作,因为每个实例都会看到该对象,我希望每个用户都能看到它。

最佳答案

HttpContext.Items 集合是针对每个请求的。因此,在您的情况下,当用户被重定向到 page2.aspx 时,您在第 1 页上创建的实例就消失了。为了使同一个实例在请求中可用,您需要使用 HttpContext.Session 来存储您的实例。

关于c# - ASP.NET 中请求或服务器独有的静态类实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/363730/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com