反序列化的时候报未找到程序集的错误

问题背景:

客户端为一个winform的exe程序,服务端为webservice。我想在winform按钮事件中调用webservice接口传对象到服务端。

我尝试了第一种方式直接在webservice中创建自定义类,写一个接口参数为自定义类的数组。在客户端添加web引用后可以看到webservice自动生成的代码,发现已经将自定义类都自动生成了,客户端可以直接拿到自定义类赋值以后直接调用webservice。

第一种方式成功后我又想到了使用序列化传,在网上拷了序列化的代码写在客户端,反序列的代码写在服务端。执行的时候在服务端反序列化的时候报了找不到程序集。

对于第二种方式的解决方案:

因为序列化的时候会将命名空间的信息也保存下来,而到服务端解析的时候,服务端不认识这个命令空间。这时候怎么办呢,因为客户端是一个exe,总不能将exe拷到服务端吧。然后我想到了建一个类库,在这个类库里面去建类(实体),然后将类库编译之后的DLL拷贝到客户端服务端各一份,在客户端服务端各自添加对该DLL的引用。这样一来客户端服务端不就都认识这个类了吗?问题就解决了。

总结:

该问题让我联想到了之前做项目时总在谈论的客户端代码服务端代码,以及客户端服务端都必须要的DLL。只要涉及到客户端服务端都要谈论到通信,通信就有数据交互,有数据交互就有序列化,有序列化就要实体类,定义一个实体类当做一个中间环节让服务端客户端都能识别就完成了数据通信了。

猜你喜欢

转载自blog.csdn.net/qq_34458421/article/details/81199697