3

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

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

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

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

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

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

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

4

2 回答 2

3

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

于 2009-07-17T16:18:21.933 回答
1

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

于 2009-07-17T16:19:26.287 回答