從經典的ASP背景開始,我對將對象放入Session非常謹慎。在會話(.NET)中存儲Dictionary <String,String>
在.NET中將類型爲Dictionary的對象存儲到Session中對我來說是不好的主意嗎?
從經典的ASP背景開始,我對將對象放入Session非常謹慎。在會話(.NET)中存儲Dictionary <String,String>
在.NET中將類型爲Dictionary的對象存儲到Session中對我來說是不好的主意嗎?
那麼,你不會有一些問題,你會用ASP。 .net不是STA COM,因此使用ASP的線程關聯問題不會對您造成傷害(除非您嘗試在會話或字典中存儲STA COM對象)。
但是,要小心併發訪問。如果多個線程可以訪問字典(對異步頁面代碼或AJAX調用進行操作),則需要對字典應用適當的鎖定。
您可以將任何內容放入會話中......您只需確保不會太多數據放入會話中,因爲這會佔用服務器資源。這是在開始測試您的站點時纔會顯示的,只有當您部署它並且許多用戶開始使用它時,因爲每個用戶在服務器上都有它自己的Session對象。
您只能在會話中放置可序列化的項目,字典不可序列化。 – DaveUK 2012-06-12 09:17:47
大的問題與傳統的ASP並沒有太大的不同(儘管我承認我沒有考慮the differences that JMarsch raised)。答案取決於許多因素:
@Jeff:有一個重要的區別。使用傳統的ASP,您的對象通常是STA COM對象,並且您可能會遇到麻煩,將它們放入會話並在次要回發中訪問它們。你的.Net對象不是STA COM(除非你明確地使它們成爲這樣),所以它們不會受到同樣的問題。 – JMarsch 2009-07-22 15:01:36
嗯,這取決於你想要達到的,對於簡單的事情,像頁面回發之間持續的狀態是什麼,我建議你使用ViewState。
優秀多數民衆贊成我想聽到的:-)線程問題是我的主要關注,存儲在會話中的對象的實際大小將很小,因爲它們很少僅由管理員使用。 – 2009-07-22 14:59:46