结构图HttpSessionLifecycle对象序列化

时间:2011-08-25 14:59:53

标签: c# asp.net-mvc-3 session serialization structuremap

我使用StructureMap来存储会话对象:

config.For<SessionContext>().LifecycleIs(new HttpSessionLifecycle());

一切正常,所以我可以使用DI轻松检索会话对象。

但现在我需要将会话从进程内切换到数据库,但是我收到以下错误。

  

无法序列化会话状态。在'StateServer'和   'SQLServer'模式,ASP.NET将序列化会话状态对象,   因此,不可序列化的对象或MarshalByRef对象是   不允许。如果类似的序列化,则适用相同的限制   由“自定义”模式下的自定义会话状态存储完成。 ---&GT;   System.Runtime.Serialization.SerializationException:Type   Assembly'StructureMap中的'StructureMap.Pipeline.MainObjectCache',   Version = 2.6.2.0,Culture = neutral,PublicKeyToken = e60ad81abae3c223'是   没有标记为可序列化。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

问题出在StructureMap中。我已将[Serializable]属性添加到MainObjectCache类和其他一些类并进行了测试。它现在有效。该修复可在this拉取请求中找到。

我希望@Joshua Flanagan很快将这些变化合并到主分支中,问题将最终得到解决。

修改

  

谢谢,我已经完成了你的改变(以及其他一些改动)并推了一个   2.6.3发布。编辑你的答案,说它是在2.6.3和。中修复的错误   将其标记为已接受的答案。 - 约书亚弗拉纳根