2009-05-12 79 views
3

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

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

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

回答

3

它在许多情况下工作得很好,比Application好(例如它是强类型的)。只要确保你知道线程和锁定问题。

作为一种个人体验,我设法缓存了几个网站中的static类中ASP.NET应用程序的配置信息。

1

这是真的,我们应该总是只使用应用程序类的静态字段?

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

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

+0

我遇到了我从另一个开发人员继承的代码。客户正试图弄清楚为什么小规模的多用户测试不能保持奇怪的数据。当我看到代码并解释了问题时,结果是一个集体* headlap!*相当简单的修复,现在我们终身拥有一个客户端。 :) – 2009-05-12 19:53:49

3

如果您在web应用程序中执行的任何操作都不仅仅是从中读取,您可能会遇到带有静态变量的大问题。 Asp.net是一个多线程环境。应用程序集合在Get或带锁的Set期间会为您锁定。如果你使用静态变量,那么就没有锁定。

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