我编写了一个ASP.NET HttpModule,我有一个静态帮助器类,用于在请求的生命周期内加载和存储配置数据。
由于静态构造函数必须是无参数的,因此我有一个静态SetConfigName方法,我在HttpRequest处理开始时调用它。
public static void SetConfigName (string configName)
{
// load data specific to given configName
}
还有一些静态Get()方法,这些方法稍后在处理HttpRequest期间调用。
为每个请求加载的配置数据可能会有所不同(基于URL中的值),因此,当我调用SetConfigName时,不希望其他请求共享静态数据。< / p>
所以问题是,多个请求是否共享相同的静态数据,或者每个新请求是否获得静态类的单独副本? (如果数据是共享的,那么如何避免它呢?是唯一可以使它成为非静态类的替代方法吗?)
(顺便说一下,我不使用global.asax。)
答案 0 :(得分:3)
请求之间共享静态数据。 要存储1个请求的静态数据,您应该使用HttpContext.Current.Items。
答案 1 :(得分:1)
多个请求会共享相同的静态数据。绕过它的唯一方法是始终根据当前请求返回信息,而不是仅返回保存的静态数据。如果这不是一个选项,那么是的,你需要使它成为非静态类。