我正在将一个ArrayList序列化为二进制文件,以便通过TCP/IP发送它。服务器创建了序列化文件,我希望能够用我正在编写的客户端反序列化它。
然而,当客户端尝试反序列化时,它会抛出SerializationException异常,因为它找不到最初序列化文件的程序集(可能是这个原因)。
我该如何解决这个问题?
然而,当客户端尝试反序列化时,它会抛出SerializationException异常,因为它找不到最初序列化文件的程序集(可能是这个原因)。
我该如何解决这个问题?
您的ArrayList是否包含自定义数据类型(即您自己的类)?
只有当反序列化代码可以访问ArrayList中包含的所有类时,ArrayList才会被反序列化。
如果您正在使用二进制序列化,则客户端需要访问包含在ArrayList中进行序列化的类型的DLL。我猜我不太清楚您的设置,无法描述应该如何完成,但这就是要点。
如果您使用类似于xml序列化的东西(使用XmlSerializaer或DataContractSerializer),则将能够生成Xml。如果您确实无法共享程序集,则可以在服务器/客户端两侧复制对象代码。
你要发送的数据是什么?你是如何序列化它的?如果你使用的是BinaryFormatter
,那么声明任何自定义类型的程序集必须在两端都存在。
请注意,BinaryFormatter
在系统间(包括同一系统的不同版本之间)进行序列化时存在许多问题。你可能需要查看其他序列化器,例如DataContractSerializer
或protobuf-net(用于高效的跨平台二进制传输)。