无法找到程序集。

4
我正在将一个ArrayList序列化为二进制文件,以便通过TCP/IP发送它。服务器创建了序列化文件,我希望能够用我正在编写的客户端反序列化它。
然而,当客户端尝试反序列化时,它会抛出SerializationException异常,因为它找不到最初序列化文件的程序集(可能是这个原因)。
我该如何解决这个问题?

有没有带完整源代码的最终解决方案? - Kiquenet
3个回答

6

您的ArrayList是否包含自定义数据类型(即您自己的类)?

只有当反序列化代码可以访问ArrayList中包含的所有类时,ArrayList才会被反序列化。


1

如果您正在使用二进制序列化,则客户端需要访问包含在ArrayList中进行序列化的类型的DLL。我猜我不太清楚您的设置,无法描述应该如何完成,但这就是要点。

如果您使用类似于xml序列化的东西(使用XmlSerializaer或DataContractSerializer),则将能够生成Xml。如果您确实无法共享程序集,则可以在服务器/客户端两侧复制对象代码。


0

你要发送的数据是什么?你是如何序列化它的?如果你使用的是BinaryFormatter,那么声明任何自定义类型的程序集必须在两端都存在。

请注意,BinaryFormatter在系统间(包括同一系统的不同版本之间)进行序列化时存在许多问题。你可能需要查看其他序列化器,例如DataContractSerializerprotobuf-net(用于高效的跨平台二进制传输)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接