我有一个应用程序可以将信息传递给服务器。我使用以下序列化方法创建了一个二进制可序列化的Message对象:
''' <summary>
''' this method is used for serlization
''' </summary>
Public Sub GetObjectData(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext) Implements System.Runtime.Serialization.ISerializable.GetObjectData
info.AddValue("message", Message, Message.GetType)
info.AddValue("tp", OBJ.GetType.ToString, Message.GetType)
info.AddValue("object", OBJ, OBJ.GetType)
End Sub
''' <summary>
''' deserialization
''' </summary>
Public Sub New(ByVal info As System.Runtime.Serialization.SerializationInfo, ByVal context As System.Runtime.Serialization.StreamingContext)
Message = info.GetString("message")
Dim TP As String = info.GetString("tp")
OBJ = info.GetValue("object", Type.GetType(TP))
End Sub
通常我使用关于我传递的对象的名称或注释填充Message,并使用对象本身填充OBJ。代码工作到几个小时前。
我做了很多更改,包括删除一些应用程序设置,但从未修改过序列化。之后,当OBJ成员变量中包含数据表时,反序列化开始失败。
我一直在网上搜索类似的错误,但找不到任何错误。
反序列化数据表时遇到的异常是:
调用目标抛出了异常。
并且堆栈是:
at System.RuntimeMethodHandle._SerializationInvoke(Object target,SignatureStruct&amp; declaringTypeSig,SerializationInfo info,StreamingContext context) at System.Reflection.RuntimeConstructorInfo.SerializationInvoke(Object target,SerializationInfo info,StreamingContext context) 在System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj,SerializationInfo info,StreamingContext context) 在System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) 在System.Runtime.Serialization.ObjectManager.DoFixups() 在System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler处理程序,__BinaryParser serParser,布尔FCHECK,布尔isCrossAppDomain,IMethodCallMessage methodCallMessage) 在System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(流serializationStream,HeaderHandler处理程序,布尔FCHECK,布尔isCrossAppDomain,IMethodCallMessage methodCallMessage) 在System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream) 在E:\ my project AMS \ Modules \ Utilities \ IDMS_Message.vb:line 60
中的IDMS.IDMS_Message.DeSerializeObject(Byte [] B)
是否有控制数据表的二进制序列化的设置?错误可能与网络有关吗?如果是这样,为什么对象列表的序列化/反序列化仍然可以正常工作,但数据表serlization会出错?
为什么突然出现这个错误?
非常感谢任何建议。
谢谢