ASP.NET中的静态变量

时间:2009-05-12 17:11:40

标签: asp.net

an article建议将ASP.NET应用程序状态存储在 HttpApplication 类的静态成员中(在Global.asax.cs中)。

如何将应用程序状态存储在其他类的静态成员中?

我试图这样做,似乎有几个这些变量的实例可以存在(每个AppDomain单个实例?)。是真的,我们是否应该只使用 Application 类的静态字段?或者没关系?

3 个答案:

答案 0 :(得分:3)

它工作得很好,在许多情况下它比Application更好(例如,它是强类型的)。只需确保您了解线程和锁定问题。

作为个人经验,我设法在几个网站的static课程中缓存ASP.NET应用程序的配置信息。

答案 1 :(得分:3)

如果您正在做的不仅仅是在Web应用程序中读取它们,那么您可能会遇到静态变量的大问题。 Asp.net是一个多线程环境。应用程序集合在Get或具有锁定的Set期间为您锁定。如果使用静态变量,则没有锁定。

我建议使用web.config将所有只读变量存储在它自己的部分中。

答案 2 :(得分:1)

  

是真的,我们是否应该只使用Application类的静态字段?

是。用户特定数据(会话数据)不应该在这里。

您网站的所有用户都在同一个应用程序实例中,因此将共享相同的静态变量。例如,它绝对不是会话的好替代品。