反序列化找不到程序集

ericmpdeng 2015-03-13 10:35:35
我服务器端序列化后UDP发送到客户端,然后反序列化,命名空间不一样,提示无法找到程序集
我试了网上的操作:
方法1.将dll加入强名称,注册到全局程序集缓存中

方法2.在反序列化使用的IFormatter 对象加入Binder 属性,使其获取要反序列化的对象所在的程序集

示例如下:

public void DeSerialize( byte [] data, int offset)
{
IFormatter formatter = new BinaryFormatter();
formatter.Binder = new UBinder();
MemoryStream stream = new MemoryStream(data, offset, stringlength);
this .m_bodyobject = ( object )formatter.Deserialize(stream);
}

public class UBinder:SerializationBinder
{
public override Type BindToType( string assemblyName, string typeName)
{
Assembly ass = Assembly.GetExecutingAssembly();
return ass.GetType(typeName);
}
}
我加了其中了第二步,还是不行,第一步应该怎么操作啊?
...全文
100 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
qxyywy 2015-03-13
  • 打赏
  • 举报
回复
反序列化的时候 对应的程序集路径是否正确?
SPFarmer 2015-03-13
  • 打赏
  • 举报
回复
序列化和发序列化,基于的程序集,命名空间,类名,版本等等一定要是一样的,要不然不成功的。 第一步,你查一下 installutil 这个命令,能够把你的dll注册到全局程序集缓存中里。这个命令是安装完VS之后会有的。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧