【发布时间】:2011-08-23 15:27:32
【问题描述】:
从 .Net 4 应用程序向 .Net 2 应用程序进行远程调用时出现以下错误。
无法加载类型 System.Collections.Generic.List`1[[MyNamespace.MyClass, MyAssembly,版本=1.0.0.0,文化=中性, 反序列化需要 PublicKeyToken=null]]。
有谁知道这是否可能是因为List<T> 在 .Net 2 和 .Net 4 中不同?
另外,MyClass 有 3 个string 和 3 个DateTime 属性并被标记为[Serializable],但没有实现ISerializable
这是堆栈跟踪:
服务器堆栈跟踪:
在 System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder 持有者,布尔 bObjectFullyComplete)
在 System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder 持有者)
在 System.Runtime.Serialization.ObjectManager.RegisterObject(对象 obj,Int64 objectID,SerializationInfo 信息,Int64 idOfContainingObj,MemberInfo 成员,Int32[] arrayIndex)
在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(对象 obj,ParseRecord pr,ParseRecord objectPr,布尔 bIsString)
在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
在 System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
在 System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler 处理程序,__BinaryParser serParser,布尔 fCheck,布尔 isCrossAppDomain,IMethodCallMessage methodCallMessage)
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流序列化流,HeaderHandler 处理程序,布尔 fCheck,布尔 isCrossAppDomain,IMethodCallMessage methodCallMessage)
在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流序列化流,HeaderHandler 处理程序,布尔 fCheck,IMethodCallMessage methodCallMessage)
在 System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) 重新抛出异常 在 [0]:
在 System.Activities.Statements.Throw.Execute(CodeActivityContext 上下文)
在 System.Activities.CodeActivity.InternalExecute(ActivityInstance 实例,ActivityExecutor 执行器,BookmarkManager 书签管理器)
在 System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor 执行器, BookmarkManager bookmarkManager, Location resultLocation)
【问题讨论】:
-
类型是自动序列化的,还是手动实现的?
标签: c# serialization remoting