程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET存儲狀態的一個問題及解決

ASP.NET存儲狀態的一個問題及解決

編輯:關於ASP.NET

通常,ASP.NET存儲會話狀態有三種方式——InProc、StateServer和SQLServer。一般最常用的是第一種,在這種情況下,可以用類似這樣的語法來存儲會話狀態:Session["key"] = val。其中val可以使任何類型的對象。  

但如果使用StateServer或SQLServer,則要求val的類型必須是一個可序列化類型,因為ASP.NET應用在於狀態服務器之間交換數據時,需要對對象進行序列化。如果val不可序列化(有私有域/屬性並且沒有指定自定義序列化特性),則會在運行時出現如下異常:  

“/”應用程序中的服務器錯誤。

--------------------------------------------------------------------------------

無法序列化會話狀態。在“StateServer”或“SQLServer”模式下,ASP.NET 將序列化會話狀態對象,因此不允許使用無法序列化的對象或 MarshalByRef 對象。如果自定義會話狀態存儲在“Custom”模式下執行了類似的序列化,則適用同樣的限制。   

解決方法有這樣幾種:  

1 盡量使用基本類型的對象來存放數據  

2 自定義類型只使用公有域/屬性  

3 為自定義類型實現序列化特性  

……  

幾種方法優劣暫不作說明。我偷懶用了第一種。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved