从.Net 4应用程序到.Net 2应用程序进行远程调用时出现以下错误.
Unable to load type
System.Collections.Generic.List`1[[MyNamespace.MyClass,
MyAssembly, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null]] required for deserialization.
有谁知道这是否可能是因为List< T> .Net 2和.Net 4有什么不同?
此外,MyClass有3个字符串和3个DateTime属性,并标记为[Serializable]但不实现ISerializable
这是堆栈跟踪:
Server stack trace:
at System.Runtime.Serialization.ObjectManager.CompleteObject(ObjectHolder holder, Boolean bObjectFullyComplete)
at System.Runtime.Serialization.ObjectManager.DoNewlyRegisteredObjectFixups(ObjectHolder holder)
at System.Runtime.Serialization.ObjectManager.RegisterObject(Object obj, Int64 objectID, SerializationInfo info, Int64 idOfContainingObj, MemberInfo member, Int32[] arrayIndex)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.RegisterObject(Object obj, ParseRecord pr, ParseRecord objectPr, Boolean bIsString)
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.ParseObjectEnd(ParseRecord pr)
at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage)
at System.Runtime.Remoting.Channels.BinaryClientFormatterSink.SyncProcessMessage(IMessage msg) Exception rethrown
at [0]:
at System.Activities.Statements.Throw.Execute(CodeActivityContext context)
at System.Activities.CodeActivity.InternalExecute(ActivityInstance instance, ActivityExecutor executor, BookmarkManager bookmarkManager)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)
解决方法:
似乎问题是加载你的类型:
MyNamespace.MyClass, MyAssembly
.NET框架需要在List< T>中加载类型T.能够序列化列表.所以问题是您的程序集或您的类型未在另一个对等方中正确加载.
您应该进行工作以了解抛出错误的计算机无法加载包含MyNamespace.MyClass,MyAssembly类型的程序集的原因
另外,请确保MyNamespace.MyClass类型,MyAssembly具有相同的版本号.
您可以使用Fusion Log tool查看装配负载故障.希望它有所帮助.