1. 程式人生 > >關於:“無法序列化會話狀態。在“StateServer”或“SQLServer”模式下,ASP.NET 將序列化會話狀態物件,因此不允許使用無法序列化的物件或 MarshalByRef 物件。如果自定義會話狀態儲存在“Custom”模式下執行了類似的序列化

關於:“無法序列化會話狀態。在“StateServer”或“SQLServer”模式下,ASP.NET 將序列化會話狀態物件,因此不允許使用無法序列化的物件或 MarshalByRef 物件。如果自定義會話狀態儲存在“Custom”模式下執行了類似的序列化

錯誤描述:

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

問題描述:

        我使用了struct 結構體型Bill,並把多個struct 型Bill放到一個ArrayList型別的array變數中,試圖將array賦值給Session,在另一個頁面中讀取Session,系統報錯!!!

解決辦法:

        在網上查詢問題後,得出的結論為我定義的變數不能被序列化,於是試著在Bill上新增 [Serializable]。例如:

[Serializable]
public struct Bill
{
    public string Name;
    public string Unit;
    public string Count;
}

        問題解決!!!