如何爲ASP.Net應用程序持久化用戶特定數據。ASP.Net在整個應用程序中持久化數據
我試過會話變量 - 工作進程回收時不好。
我需要一些可以被我的應用程序的任何類別全局訪問的東西。
建議最受歡迎。
我試圖利用asp.net會話狀態服務器,但我有一些DLL崩潰,因爲它們是Unserializable。
是否有任何其他方式在應用程序中擁有持久變量?
如何爲ASP.Net應用程序持久化用戶特定數據。ASP.Net在整個應用程序中持久化數據
我試過會話變量 - 工作進程回收時不好。
我需要一些可以被我的應用程序的任何類別全局訪問的東西。
建議最受歡迎。
我試圖利用asp.net會話狀態服務器,但我有一些DLL崩潰,因爲它們是Unserializable。
是否有任何其他方式在應用程序中擁有持久變量?
ASP.NET會話狀態可以配置爲保存到數據庫。
將數據存儲在數據庫(如SQL Server)中。
你無須真正做到對進程回收。如果您巧妙地使用緩存來保留更具全局意義的信息,但您仍然具有相同的工作進程限制。
我嘗試在具有業務實體對象的n層設置中設計我的應用程序。我的對象的工廠方法使用緩存類型,就像一個懶惰的即時模式。如果它在cahce中,拉它。如果沒有,請將其放入下次緩存中。
即
MyAppsNameSpace.MyBusinessLayerNameSpace.MyObject.GetObject(objectID)
現在,當它返回我的對象,也可能是從緩存中也可能不會,如果對象是在高使用率那麼它將可能被緩存。
這可以在整個應用程序中使用,因爲緩存機制是集中維護的,所以您不必擔心它。
你會發布更多的例子嗎?一篇文章也許?謝謝。 – Batuta 2009-02-26 15:36:43
您可以將會話狀態服務器更改爲不在進程中,這樣會使其更加穩定並將其與工作進程分離(您需要能夠在服務器上啓動Asp.NET狀態服務如果它沒有運行)
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>
此外,如果您需要在應用程序之間共享在同一個域中,你應該能夠給他們同樣的machine key
如果在工作進程重新啓動時丟失數據,則應該停止使用會話的InProc持久性模式。使用StateServer或SQL Server。如果你不滿意,最終你可以建立自己的會話持久性模塊。
數據需要持續多久?任何超過幾個小時的時間,你都應該考慮將它存儲在服務器上或sql中。下面的答案提到了asp.net個人資料,這可能是一個很好的開始 – 2009-02-26 15:55:25