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

时间:2009-07-17 16:15:26

标签: c# httpmodule

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

由于静态构造函数必须是无参数的,因此我有一个静态SetConfigName方法,我在HttpRequest处理开始时调用它。

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

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

为每个请求加载的配置数据可能会有所不同(基于URL中的值),因此,当我调用SetConfigName时,希望其他请求共享静态数据。< / p>

所以问题是,多个请求是否共享相同的静态数据,或者每个新请求是否获得静态类的单独副本? (如果数据是共享的,那么如何避免它呢?是唯一可以使它成为非静态类的替代方法吗?)

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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