Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 结构映射HttpSessionLifecycle对象序列化_C#_Asp.net Mvc 3_Session_Serialization_Structuremap - Fatal编程技术网

C# 结构映射HttpSessionLifecycle对象序列化

C# 结构映射HttpSessionLifecycle对象序列化,c#,asp.net-mvc-3,session,serialization,structuremap,C#,Asp.net Mvc 3,Session,Serialization,Structuremap,我正在使用存储会话对象: config.For<SessionContext>().LifecycleIs(new HttpSessionLifecycle()); config.For().LifecycleIs(新的HttpSessionLifecycle()); 一切正常,因此我可以轻松检索会话对象 但是现在我需要将会话从进程中切换到数据库,但是我收到以下错误 无法序列化会话状态。在“StateServer”和 “SQLServer”模式,ASP.NET将序列化会话状态对象

我正在使用存储会话对象:

config.For<SessionContext>().LifecycleIs(new HttpSessionLifecycle());
config.For().LifecycleIs(新的HttpSessionLifecycle());
一切正常,因此我可以轻松检索会话对象

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

无法序列化会话状态。在“StateServer”和 “SQLServer”模式,ASP.NET将序列化会话状态对象, 因此,不可序列化对象或MarshalByRef对象是 不允许。如果存在类似的序列化,则同样的限制也适用 由自定义会话状态存储在“自定义”模式下完成。--> System.Runtime.Serialization.SerializationException:类型 程序集“StructureMap”中的“StructureMap.Pipeline.MainObjectCache”, 版本=2.6.2.0,区域性=中性,PublicKeyToken=e60ad81abae3c223'是 未标记为可序列化


我怎样才能解决这个问题

问题出在StructureMap中。我已经向
MainObjectCache
类和其他一些类添加了[Serializable]属性,并对其进行了测试。现在可以了。可以在pull请求中找到修复

我希望@Joshua Flanagan能很快将这些更改合并到主分支中,最终解决问题

编辑:

谢谢,我已经把你的零钱(和其他一些零钱)收进来了,并且推了一个 2.6.3发布。编辑您的答案,说它是2.6.3中修复的错误,然后 将其标记为已接受的答案约书亚·弗拉纳根


为什么是负数?有人可以解释吗?会话中的每个对象都标记为
[Serializable]
?@Jay:是的,我所有的类
都是可序列化的。结构映射中存在问题,它以某种方式将会话对象与无法序列化的类包装在一起,请参见上面的错误。为什么要将会话上下文放在容器中?您正在尝试将会话存储在会话中-我认为这是错误的。如果您解释您的需要,我相信有更好的解决方案。@JoshuaFlanagan:我不想在会话中存储会话。我的类
SessionContext
只包含简单的属性(int,string)。我试图通过结构映射HttpSessionLifecycle将其存储在会话中。如果会话在内存中,一切正常。但当我试图在数据库中存储会话(会话项应该是可序列化的)时,我收到了上述错误。似乎结构映射包装了会话项。