我使用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'是 没有标记为可序列化。
我该如何解决这个问题?
答案 0 :(得分:3)
问题出在StructureMap中。我已将[Serializable]属性添加到MainObjectCache
类和其他一些类并进行了测试。它现在有效。该修复可在this拉取请求中找到。
我希望@Joshua Flanagan很快将这些变化合并到主分支中,问题将最终得到解决。
修改强>
谢谢,我已经完成了你的改变(以及其他一些改动)并推了一个 2.6.3发布。编辑你的答案,说它是在2.6.3和。中修复的错误 将其标记为已接受的答案。 - 约书亚弗拉纳根