2009-07-17 70 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。