[ASP.net] 使用StateServer時,把自訂物件儲存在Session造成「無法序列化工作階段狀態」的注意事項

[ASP.net] 使用StateServer時,把自訂物件儲存在Session造成「無法序列化工作階段狀態」的注意事項

照著此篇文章

如何讓 ASP.NET 使用 Session 資料時不要再自動消失

把StateServer開啟後

若發生

無法序列化工作階段狀態。在 'StateServer' 和 'SQLServer' 模式中,ASP.NET 將序列化工作階段狀態物件,因此不允許無法序列化的物件或 MarshalByRef 物件。在 'Custom' 模式中,自訂工作階段狀態存放區執行類似的序列化作業時,也會有同樣的限制。

 

image

(以上畫紅線的LoginInfo是自訂類別)

解決辦法:自訂類別加一個Serializable屬性標記

image

.net Framework內建物件的話

目前測了一下,DataTable原本就可以儲存在Session裡

OleDbCommand物件等等(應該滿多的),則不行。

 

其他參考文章:將物件存放在Session中會造成StateServer錯誤

如何設定與啟用 ASP.NET 的 SQLServer 工作階段狀態模式