【发布时间】:2010-10-25 15:02:57
【问题描述】:
an article 建议将 ASP.NET 应用程序状态存储在 HttpApplication 类的静态成员中(在 Global.asax.cs 中)。
将应用程序状态存储在其他类的静态成员中怎么样?
我尝试这样做,但似乎可以存在这些变量的多个实例(每个 AppDomain 一个实例?)。这是真的吗?我们应该总是只使用 Application 类的静态字段吗?还是没关系?
【问题讨论】:
标签: asp.net
an article 建议将 ASP.NET 应用程序状态存储在 HttpApplication 类的静态成员中(在 Global.asax.cs 中)。
将应用程序状态存储在其他类的静态成员中怎么样?
我尝试这样做,但似乎可以存在这些变量的多个实例(每个 AppDomain 一个实例?)。这是真的吗?我们应该总是只使用 Application 类的静态字段吗?还是没关系?
【问题讨论】:
标签: asp.net
它工作得很好,在很多情况下都比Application 好(例如,它是强类型的)。只需确保您了解线程和锁定问题。
作为个人经验,我设法在几个网站的 static 类中缓存了 ASP.NET 应用程序的配置信息。
【讨论】:
如果您做的不仅仅是在 Web 应用程序中读取静态变量,您可能会遇到很大的问题。 Asp.net 是一个多线程环境。应用程序集合在 Get 或 Set 期间为您锁定。如果使用静态变量,则没有锁定。
我建议使用 web.config 将所有只读变量存储在它自己的部分中。
【讨论】:
这是真的吗?我们应该总是只使用 Application 类的静态字段吗?
是的。用户特定的数据(会话数据)不应放在此处。
您网站的所有用户都在同一个应用程序实例中,因此将共享相同的静态变量。例如,它绝对不是会话的好替代品。
【讨论】: