【问题标题】:Static variables in ASP.NETASP.NET 中的静态变量
【发布时间】:2010-10-25 15:02:57
【问题描述】:

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

将应用程序状态存储在其他类的静态成员中怎么样?

我尝试这样做,但似乎可以存在这些变量的多个实例(每个 AppDomain 一个实例?)。这是真的吗?我们应该总是只使用 Application 类的静态字段吗?还是没关系?

【问题讨论】:

    标签: asp.net


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        这是真的吗?我们应该总是只使用 Application 类的静态字段吗?

        是的。用户特定的数据(会话数据)不应放在此处。

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

        【讨论】:

        • 我在从另一个开发人员那里继承的代码中遇到了这个问题。客户试图弄清楚为什么小规模的多用户测试总是因为奇怪的数据而失败。当我看到代码并解释问题时,结果是集体头晕目眩!相当容易解决,现在我们有一个终生客户。 :)
        猜你喜欢
        • 2012-01-20
        • 1970-01-01
        • 1970-01-01
        • 2013-04-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多