关于多用户全局变量的思考

时间:2014-09-30 08:35:01

标签: c# asp.net web global-variables

我在我的网络应用程序中使用全局变量。 Web应用程序确实具有登录功能,并且可以允许多个用户。全局变量用于存储当前正在处理的项目的数据。

如果多个用户试图访问这些全局变量,或者它们在各自的工作站中只是全局变量,我的应用程序是否会处于混乱状态?

如果它会造成混乱,那么替换全局变量的最佳方法是什么。

1 个答案:

答案 0 :(得分:2)

不要在ASP.NET应用程序中使用static变量!它们在所有会话/用户之间共享,因为它们保存在Web服务器中,而不是客户端上。

您有几个选项,已在ASP.NET中内置:

  • Cache:适用于临时对象的应用程序范围的所有会话
  • Session:每次会话
  • Application:应用程序范围内,所有会话,长时间保留对象

您可以在使用其中一个的类中轻松创建属性(当然,您可以在没有属性的情况下执行此操作,但我认为它们是更好的做法):

public List<string> SomeSettingPerUser
{
    get
    {
        return (List<string>)HttpContext.Current.Session["SomeSetting"];
    }
    set
    {
        HttpContext.Current.Session["SomeSetting"] = value;
    }
}