IPC反序列化异常仅在接收数据时发生?发送工作正常
IPC deserialization exception only on recieving data? Sending works fine
我有一个问题,我真的无法解决。
我有两个程序,使用 BinaryFormatting 通过 IPC 进行通信。我将客户端和服务器 class 放在同一个程序集中,包括所有 classes 来传输数据。
我不明白的是,为什么当我尝试接收一个对象但发送一个对象时却收到“找不到程序集”的序列化异常。
因此,如果 IPC 客户端调用方法“Config GetConfig()”,returns 我的配置-class 将抛出异常。当我调用方法“SetConfig(Config config)”时,配置毫无问题地到达 IPC 服务器。
我已经尝试切换到 SoapFormatter 而不是 Binary,并尝试使用接口而不是 class。结果都一样。发送数据正常,获取数据抛出反序列化异常。
有人可以给我提示,我该如何解决这个问题?或者至少要寻找什么来修复它?
所以问了一段时间后我终于找到了问题和解决方案。
问题是,我的客户端是 COM 组件的一部分,并且 post 指导我,二进制格式化程序不关心已经加载的程序集。看起来它总是尝试从 AppDomain.CurrentDomain.BaseDirectory 解析程序集,在我的例子中它是可执行文件的路径。
所以解决方案是绑定到 appdomain 中的 AssemblyResolve-Event,并从正确的目录解析程序集。
如果其他人遇到同样的问题,希望这对您有所帮助。
我有一个问题,我真的无法解决。 我有两个程序,使用 BinaryFormatting 通过 IPC 进行通信。我将客户端和服务器 class 放在同一个程序集中,包括所有 classes 来传输数据。
我不明白的是,为什么当我尝试接收一个对象但发送一个对象时却收到“找不到程序集”的序列化异常。
因此,如果 IPC 客户端调用方法“Config GetConfig()”,returns 我的配置-class 将抛出异常。当我调用方法“SetConfig(Config config)”时,配置毫无问题地到达 IPC 服务器。
我已经尝试切换到 SoapFormatter 而不是 Binary,并尝试使用接口而不是 class。结果都一样。发送数据正常,获取数据抛出反序列化异常。
有人可以给我提示,我该如何解决这个问题?或者至少要寻找什么来修复它?
所以问了一段时间后我终于找到了问题和解决方案。 问题是,我的客户端是 COM 组件的一部分,并且 post 指导我,二进制格式化程序不关心已经加载的程序集。看起来它总是尝试从 AppDomain.CurrentDomain.BaseDirectory 解析程序集,在我的例子中它是可执行文件的路径。
所以解决方案是绑定到 appdomain 中的 AssemblyResolve-Event,并从正确的目录解析程序集。
如果其他人遇到同样的问题,希望这对您有所帮助。