首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET Session 狀態儲存:StateServer 與 SQLServer 模式序列化問題解決

     編輯:關於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