有an article建議將ASP.NET應用程序狀態存儲在HttpApplication類(在Global.asax.cs中)的靜態成員中。ASP.NET中的靜態變量
如何在其他類的靜態成員中存儲應用程序狀態?
我試過這樣做,似乎有幾個這些變量的實例可以存在(每個AppDomain的單個實例?)。這是否屬實,我們應該只使用應用程序類的靜態字段?或者沒關係?
有an article建議將ASP.NET應用程序狀態存儲在HttpApplication類(在Global.asax.cs中)的靜態成員中。ASP.NET中的靜態變量
如何在其他類的靜態成員中存儲應用程序狀態?
我試過這樣做,似乎有幾個這些變量的實例可以存在(每個AppDomain的單個實例?)。這是否屬實,我們應該只使用應用程序類的靜態字段?或者沒關係?
它在許多情況下工作得很好,比Application
好(例如它是強類型的)。只要確保你知道線程和鎖定問題。
作爲一種個人體驗,我設法緩存了幾個網站中的static
類中ASP.NET應用程序的配置信息。
這是真的,我們應該總是隻使用應用程序類的靜態字段?
是的。用戶特定的數據(會話數據)不應該在這裏。
您網站的所有用戶都在同一個應用程序實例中,因此將共享相同的靜態變量。例如,它絕對不是會議的好替代品。
如果您在web應用程序中執行的任何操作都不僅僅是從中讀取,您可能會遇到帶有靜態變量的大問題。 Asp.net是一個多線程環境。應用程序集合在Get或帶鎖的Set期間會爲您鎖定。如果你使用靜態變量,那麼就沒有鎖定。
我建議使用web.config將所有隻讀變量存儲在它自己的部分中。
我遇到了我從另一個開發人員繼承的代碼。客戶正試圖弄清楚爲什麼小規模的多用戶測試不能保持奇怪的數據。當我看到代碼並解釋了問題時,結果是一個集體* headlap!*相當簡單的修復,現在我們終身擁有一個客戶端。 :) – 2009-05-12 19:53:49