2009-11-05 75 views
1

也許問題是錯誤的,但這是我想實現的,也許還有其他方法可以做到這一點。ASP.NET有沒有辦法將應用程序狀態保存爲不同服務器上的會話狀態?

我有ASP.NET應用程序運行.net 3.5,有一個客戶端列表和其他幾個List應用程序的所有用戶之間共享的基於對象。即。當客戶端登錄他的用戶ID並且少數其他屬性保存在應用程序狀態下的某個列表中。問題是這個應用程序很繁重,而且它的應用程序池需要每天重新啓動一次,所以保存在這些List對象中的所有信息都會丟失。保存在外部服務器上以超出Pro模式保存的客戶個人數據。

有什麼辦法可以解決它嗎?共享會話?類似的東西。

請不要MSSQL解決方案...

乾杯,專業人員!!!!

回答

1

你看過緩存數據列表嗎?

這個SO文章有一些很好的detials。

+0

歡呼聲,似乎或多或少我在找什麼 – eugeneK 2009-11-05 11:36:37

1

您應該只使用應用程序狀態作爲其他地方持久數據的緩存。然後,您將使用Application_Start或一些Lazy加載包裝類將此類持久數據檢索到應用程序對象中。

如果您正在存儲易失性數據而不是在應用程序對象的其他地方保存,那麼您有麻煩了。希望你能抽象出一些包裝器對象後面的應用程序對象,以便你的代碼可以訪問包裝器而不是應用程序對象。現在您需要確保修改已保存在其他位置,以便在重新啓動時恢復它們。

坦率地說,應用程序狀態對象實際上是移植ASP-Classic站點的一種幫助。由於您應該將應用程序狀態視爲緩存,因此它與ASP.NET緩存對象之間的功能重疊。

+0

因此,你建議保存在緩存和應用程序池回收時會發生什麼? – eugeneK 2009-11-05 12:01:40

+0

我並不是建議使用Cache來解決池回收問題,我只是指出這裏存在重疊。您需要在一些非易失性位置存儲共享數據,並在應用程序啓動或按需時將其加載到應用程序或緩存中。如果您的代碼修改了數據,則需要將其保存回非易失性存儲。如果您想要支持Web Garden或Farms,那麼使用緩存會更好,因爲您可以在緩存項目上創建SQL或文件依賴關係。 – AnthonyWJones 2009-11-05 12:38:31

相關問題