C# 无法序列化会话状态。在';StateServer';和';SQLServer';模式下,ASP.NET将序列化会话状态对象,因此

C# 无法序列化会话状态。在';StateServer';和';SQLServer';模式下,ASP.NET将序列化会话状态对象,因此,c#,asp.net,session,serialization,C#,Asp.net,Session,Serialization,我正在尝试为我的asp.net应用程序实现StateServer会话管理。我知道会话中的每个对象都需要可序列化 为此,我在每个类中添加了Serializable标记。但它显示了上面的错误消息。然后我尝试了LINQtoSQL特性,以便至少将对象序列化。但它也不起作用。我应该怎么做。问题是,您正在会话中放入不可序列化的内容(如您所怀疑的) 由于您已将自己的类标记为可序列化的,因此有两种可能: 您继承了一些不可序列化的内容(因此,将继承的类标记为可序列化将没有帮助) 您正试图在会话中存储一些不属于您的

我正在尝试为我的asp.net应用程序实现StateServer会话管理。我知道会话中的每个对象都需要可序列化


为此,我在每个类中添加了Serializable标记。但它显示了上面的错误消息。然后我尝试了LINQtoSQL特性,以便至少将对象序列化。但它也不起作用。我应该怎么做。

问题是,您正在会话中放入不可序列化的内容(如您所怀疑的)

由于您已将自己的类标记为可序列化的,因此有两种可能:

  • 您继承了一些不可序列化的内容(因此,将继承的类标记为可序列化将没有帮助)

  • 您正试图在会话中存储一些不属于您的类且不可序列化的内容,很可能是一个框架类。常见的例子可能是
    EntitySet
    DataTable
    字典

  • 另外,应该从完整的异常信息中清楚导致问题的确切类

    例如,问题I中显示的错误消息如下:


    是的可能重复这是框架类System.Data.Linq.DataContext。实际错误:SerializationException:在程序集“System.Data.Linq”中键入“System.Data.Linq.DataContext”。为了实现“STATESERVER”,我应该做什么?不要在会话中存储DataContext(无论如何,这很可能是一个糟糕的计划)。将用于构建页面的结果存储在状态中,但是像DataContext这样的结构化内容对于每个工作单元来说都应该是最新的。我不是在会话中存储DataContext,实际上是存储了一个继承DataContext的类。是否有任何可能的方法在dbml中存储该对象(我读了一个文档,说你需要添加)但我不知道在哪里添加它。请参见-在设计器中,在空白处(而不是实体上)单击鼠标右键,然后选择“属性”。
    [SerializationException: Type 'Gebruiker' in Assembly 'App_Code.qzuhycmn, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.]