代码之家  ›  专栏  ›  技术社区  ›  ObiWanKenobi

HttpModule和static类,多个请求是否共享相同的静态数据?

  •  3
  • ObiWanKenobi  · 技术社区  · 17 年前

    我已经编写了一个ASP.NET HttpModule,并且有一个静态帮助器类,用于加载和存储请求生命周期内的配置数据。

        public static void SetConfigName (string configName)
        {
            // load data specific to given configName
        }
    

    还有一些静态Get()方法,稍后在处理HttpRequest期间调用。

    每个请求加载的配置数据可能不同(基于URL中的值),所以我会这样做 不 调用SetConfigName后,希望其他请求共享静态数据。

    所以问题是,是多个请求共享相同的静态数据,还是每个新请求都获得静态类的单独副本?(如果数据是共享的,如何避免它?是使其成为非静态类的唯一选择吗?)

    (顺便说一下,我不使用global.asax。)

    2 回复  |  直到 17 年前
        1
  •  3
  •   Tommy Carlier    17 年前

    静态数据在请求之间共享。 要存储1个请求的静态数据,应使用HttpContext.Current.Items。

        2
  •  1
  •   Max Schmeling    17 年前

    多个请求确实共享相同的静态数据。绕过它的唯一方法是始终基于当前请求返回信息,而不是仅返回保存的静态数据。如果这不是一个选项,那么是的,您需要使它成为一个非静态类。