首页 > 解决方案 > 仅在接收数据时出现 IPC 反序列化异常?发送工作正常

问题描述

我有一个问题,我真的不能落后。我有两个程序,通过 IPC 使用 BinaryFormatting 进行通信。我将客户端和服务器类放在同一个程序集中,包括所有用于传输数据的类。

我不明白的是,为什么当我试图接收一个对象但发送一个对象时,我会收到一个带有“未找到程序集”的序列化异常。

因此,如果 IPC 客户端调用返回我的配置类的方法“Config GetConfig()”,则会引发异常。当我调用方法“SetConfig(Config config)”时,配置到达 IPC 服务器没有任何问题。

我已经尝试切换到 SoapFormatter 而不是 Binary 并尝试使用接口而不是类。所有的结果都是一样的。发送数据工作正常,获取数据会引发反序列化异常。

有人可以给我一个提示,我该如何解决这个问题?或者至少要寻找什么来解决它?

标签: c#deserializationipc

解决方案


所以在问了这个问题一段时间后,我终于找到了问题和解决方案。问题是,我的客户是 COM-Component 的一部分,并且一个帖子为我指明了方向,binaryformatter 并不关心已经加载的程序集。看起来它总是试图从 AppDomain.CurrentDomain.BaseDirectory 解析程序集,这是可执行文件的路径,在我的情况下是前景。

所以解决方案是绑定到 appdomain 中的 AssemblyResolve-Event,从正确的目录解析程序集。

如果其他人有同样的问题,希望这会有所帮助。


推荐阅读