3

ASP.NET HttpModuleを作成しましたが、リクエストの存続期間中、構成データを読み込んで保存するために使用される静的ヘルパークラスがあります。

静的コンストラクターはパラメーターなしである必要があるため、HttpRequestの処理の開始時に呼び出す静的SetConfigNameメソッドがあります。

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

後でHttpRequestの処理中に呼び出される静的なGet()メソッドもあります。

ロードされる構成データは(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 に答える