【发布时间】:2012-05-01 03:11:36
【问题描述】:
我试图在我们的 nopcommerce 1.9 安装中将会话状态存储在 SQL 而不是 InProc 中。当我对 web.config 进行必要的更改时,我收到此错误:
“/”应用程序中的服务器错误。
无法序列化会话状态。在“状态服务器”和 'SQLServer' 模式,ASP.NET 将序列化会话状态对象, 结果是不可序列化的对象或 MarshalByRef 对象 不允许。如果类似的序列化,同样的限制适用 由自定义会话状态存储在“自定义”模式下完成。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.Web.HttpException:无法序列化 会话状态。在“StateServer”和“SQLServer”模式下,ASP.NET 将 序列化会话状态对象,因此不可序列化 不允许使用对象或 MarshalByRef 对象。相同 如果自定义进行了类似的序列化,则限制适用 “自定义”模式下的会话状态存储。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
堆栈跟踪:
[序列化异常:类型 'NopSolutions.NopCommerce.BusinessLogic.Categories.Category' 在 程序集'Nop.BusinessLogic,版本=1.9.0.0,文化=中性, PublicKeyToken=null' 未标记为可序列化。]
System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType 类型)+9449041
System.Runtime.Serialization.FormatterServices.GetSerializableMembers(类型 类型,StreamingContext 上下文)+247
System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo() +160 System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(类型 objectType, ISurrogateSelector surrogateSelector, StreamingContext 上下文,SerObjectInfoInit serObjectInfoInit,IFormatterConverter 转换器,SerializationBinder 活页夹)+371
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteArray(WriteObjectInfo objectInfo、NameInfo memberNameInfo、WriteObjectInfo memberObjectInfo) +205 System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo) +651
System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(对象 图,Header[] inHeaders,__BinaryWriter serWriter,布尔 fCheck) +444 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(流 序列化流、对象图、Header[] 标头、布尔 fCheck) +133 System.Web.Util.AltSerialization.WriteValueToStream(Object value, BinaryWriter writer) +1762[HttpException (0x80004005): 无法序列化会话状态。在 'StateServer' 和 'SQLServer' 模式,ASP.NET 将序列化会话 状态对象,结果是不可序列化的对象或 不允许 MarshalByRef 对象。同样的限制适用 如果类似的序列化由自定义会话状态存储完成 “自定义”模式。]
System.Web.Util.AltSerialization.WriteValueToStream(对象值, BinaryWriter 作家)+1847
System.Web.SessionState.SessionStateItemCollection.WriteValueToStreamWithAssert(对象 值,BinaryWriter 写入器)+34
System.Web.SessionState.SessionStateItemCollection.Serialize(BinaryWriter 作家)+638
System.Web.SessionState.SessionStateUtility.Serialize(SessionStateStoreData 项目,流流)+244
System.Web.SessionState.SessionStateUtility.SerializeStoreData(SessionStateStoreData item, Int32 initialStreamSize, Byte[]& buf, Int32& length, Boolean 压缩启用)+67
System.Web.SessionState.SqlSessionStateStore.SetAndReleaseItemExclusive(HttpContext 上下文、字符串 id、SessionStateStoreData 项、对象 lockId、布尔值 新项目)+140
System.Web.SessionState.SessionStateModule.OnReleaseState(对象 源,EventArgs eventArgs) +807
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +148 System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75版本信息:Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.272
请告诉我,我不需要序列化 Nopcommerce 中的每个对象来执行此操作!
【问题讨论】:
标签: c# asp.net serialization session-state nopcommerce