【发布时间】:2012-06-11 22:58:00
【问题描述】:
我在序列化时不时收到此错误,我不知道我需要序列化哪个文件。 页面在加载其他时间时打开和关闭。 这是我得到的错误:
System.Web.HttpException (0x80004005):无法序列化会话 状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将序列化 会话状态对象,因此是不可序列化的对象或 不允许 MarshalByRef 对象。同样的限制适用 如果类似的序列化由自定义会话状态存储完成 '自定义模式。 ---> System.Runtime.Serialization.SerializationException:类型 'System.Data.Entity.DynamicProxies.Product_CC06DC79809AC788823D74B88F94CCB7155ADCE697911AF73214FB8B5F2B2EB4' 在大会'EntityFrameworkDynamicProxies-Nop.BusinessLogic, Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 未标记 作为可序列化的。在 System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型)在 System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型 类型,StreamingContext 上下文)在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() 在 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(对象 obj,ISurrogateSelector surrogateSelector,StreamingContext 上下文, SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器, ObjectWriter objectWriter, SerializationBinder binder) 在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo 对象信息,名称信息成员名称信息,名称信息类型名称信息)在 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象 图,Header[] inHeaders,__BinaryWriter serWriter,布尔 fCheck)
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(流 序列化流、对象图、Header[] 标头、布尔 fCheck)
在 System.Web.Util.AltSerialization.WriteValueToStream(对象值, BinaryWriter 作家)在 System.Web.Util.AltSerialization.WriteValueToStream(对象值, BinaryWriter 作家)在 System.Web.SessionState.SessionStateItemCollection.WriteValueToStreamWithAssert(对象 值,BinaryWriter 写入器)在 System.Web.SessionState.SessionStateItemCollection.Serialize(BinaryWriter 作家)在 System.Web.SessionState.SessionStateUtility.Serialize(SessionStateStoreData 项目,流流)在 System.Web.SessionState.SessionStateUtility.SerializeStoreData(SessionStateStoreData item, Int32 initialStreamSize, Byte[]& buf, Int32& length, Boolean 压缩启用)在 System.Web.SessionState.SqlSessionStateStore.SetAndReleaseItemExclusive(HttpContext 上下文、字符串 id、SessionStateStoreData 项、对象 lockId、布尔值 新项目)在 System.Web.SessionState.SessionStateModule.OnReleaseState(对象 源,EventArgs eventArgs)在 System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 在 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤, Boolean & completedSynchronously)
所以基本上我认为是实体模型,但我想知道如何序列化它。 在此先感谢 Laziale
【问题讨论】:
-
是否需要序列化整个实体?将唯一 ID 存储在会话中并从数据库中检索实体本身可能会更好。
-
顺便说一句,
DataContractSerializer是否适用于您的对象?如果是这样,另一种选择是:使用DataContractSerializer序列化并仅存储输出 -
+1 用于数据合约序列化程序。
-
为什么需要这样做?这种错误通常是可以通过其他方式正确完成的事情的症状。
标签: c# asp.net entity-framework serialization entity