【问题标题】:Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result无法序列化会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化会话状态对象,结果
【发布时间】:2014-01-07 13:01:54
【问题描述】:

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

为此,我为每个类添加了 Serializable 标签。但它显示了上面的错误消息。然后我尝试了 Linq-To-Sql 功能,以便至少将对象序列化。但它也没有奏效。我应该怎么做。

【问题讨论】:

标签: c# asp.net session serialization


【解决方案1】:

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

由于您已将自己的课程标记为Serializable,因此有两种可能的可能性:

  1. 你继承自非 Serializable 的东西(因此标记你继承的类 Serializable 无济于事)。

  2. 您试图在会话中存储一些不是您的类之一且不可序列化的东西,很可能是一个框架类。常见的例子可能是EntitySetDataTableDictionary<>

还应该从完整的异常信息中明确导致问题的确切类。

例如,问题 Ive linked to 中显示的错误消息如下:

[SerializationException: Type 'Gebruiker' in Assembly 'App_Code.qzuhycmn, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.]

【讨论】:

  • 是的,这是框架工作类 System.Data.Linq.DataContext。实际错误:SerializationException:在程序集“System.Data.Linq”中键入“System.Data.Linq.DataContext”。为了实现“STATESERVER”,我应该做什么。
  • 不要在会话中存储 DataContext(无论如何这很可能是一个糟糕的计划)。将用于构建页面的结果存储在状态中,但像 DataContext 这样的结构性内容 - 理想情况下对于每个工作单元来说应该是新鲜的。
  • 我没有将 DataContext 存储在 Session 中,实际上存储了一个继承 DataContext 的类。是否有任何可能的方式来存储该对象,您需要在 dbml 中提及(我读过一个文档。说你需要添加 ) 但我很困惑在哪里添加它。
  • 参见here - 在设计器中,右键单击空白区域(不是实体)并选择属性。
猜你喜欢
  • 1970-01-01
  • 2013-09-27
  • 2012-05-07
  • 2013-09-24
  • 1970-01-01
相关资源
最近更新 更多