2009-07-17 71 views
3

我写了一个ASP.NET HttpModule,并且我有一个静态帮助类,用于加载和存储请求生命周期的配置数据。HttpModule和静态类,做多个请求共享相同的静态数据?

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

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

也有静态的get(),稍后HttpRequest中的处理过程中调用的方法。

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

所以问题是,做多个请求共享相同的静态数据,还是每个新的请求都得到一个单独的静态类的副本? (如果数据是共享的,如何避免呢?是让非静态类的唯一选择?)

(顺便说一句,我不使用的Global.asax。)

回答

1

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

3

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