C# 反序列化失败,是在activex控件中进行的,网上搜索无解,症状奇特,求关注,求诊断

q535255263 2012-12-03 02:13:37
主要想实现的功能是浏览器与其他窗体的通讯。

用c#做了一个activex。

activex的工作流程如下:

流程一:
从网页中获取数据封装成对象--->序列化--->由socket发送--->B端的socket收到-->反序列化-->处理

流程二:
B端处理完后-->数据封装成对象-->由B端socket发送-->activex端的socket收到--->activex端反序列化失败(错误信息:找不到程序集...)


流程一全部成功。成功将网页里文本框的内容发送给B端的窗体,并显示出来

流程二进行到activex端反序列化的时候失败了。还导致IE停止工作


流程一完成了一遍 对数据对象的 序列化和反序列化
这里是不是证明了 两端的包含数据对象的那个程序集的版本信息之类的东西都一致了,
而且两端添加引用的是同一个dll。

流程二的时候失败,这是哪里出问题了?

流程一最后面的处理就是把收到字符串显示到文本框里而已。然后把数据对象送回activex端。



...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishiming0308 2013-09-13
  • 打赏
  • 举报
回复
更好的解决办法见:http://blog.csdn.net/lishiming0308/article/details/11483365
q535255263 2012-12-06
  • 打赏
  • 举报
回复
问题已经解决了。9楼的回答最接近。 我把需要序列化和反序列的DLL文件 放在IE的bin目录下就行了。 可能IE加载完Activex后,Activex就成为IE程序的一部分了。 而反序列化的时候默认就是使用主程序的bin目录
  • 打赏
  • 举报
回复
找不到哪一个程序集? 另外给你一个忠告,轻量级的通讯使用json,不要使用xml。因为json没有命名空间等复杂和易错的问题,而且也快很多倍。
q535255263 2012-12-04
  • 打赏
  • 举报
回复
补充说明一下: 被序列化和反序列化的就是封装数据的那个类
q535255263 2012-12-04
  • 打赏
  • 举报
回复
我说的两端添加引用的是同一个dl的意思是这样的: 封装数据的那个类的程序集(C#.NET 的一个类库项目)是另外写的。生成了DLL文件(后面称为C.DLL)。 activex端(C#.NET 的一个控件类库项目)添加引用了C.DLL。生成的时候会自动把C.DLL文件复制一份到本项目的输出目录下的。 (activex是在JSP页面使用的)。 B端(C#.NET 的一个窗体项目)同样添加了引用了C.DLL文件。 而且是在同一台电脑上测试的。 activex端是在浏览器上的。 B端是一个窗体。 可以把浏览器获得的数据发送到窗体上显示。(这一流程是成功实现了)。 但是获取窗体数据发送回来的时候在activex端反序列化那一步出错了,说是找不到程序集。
assky124 2012-12-04
  • 打赏
  • 举报
回复
可能是文件路径问题, 比如你注册的ActiveX控件在 "C:\MyActiveX\" 而IE加载后当前路径应该是 "C:\Programe ..."之类的一个路径 引用DLL是程序会检索当前路径,IE下的路径,和.net的安装路径。明显这两个路径都没有你的DLL。 解决方法如下: 将DLL Copy 到 IE 或者 .net 的关联路径。 或者用反射+ Application的路径(就是你的DLL所在路径)
本拉灯 2012-12-04
  • 打赏
  • 举报
回复
找不到程序集,是因为你的Active装载到本地的iE时,只下载了Active.DLL文件,而ActiveDLL引用的 序列化与反序列化的DLL没有下载到本地来,所以提示找不到。建议ACTIVE引用的那个DLL的原码直接放到ACTIVE.DLL项目下一起编译。或把Active与你引用的DLL打包成安装项目,让IE自动安装
  • 打赏
  • 举报
回复
是否浏览器没有正确加载ActiveX控件?控件中出现未处理的异常导致IE崩溃
q535255263 2012-12-04
  • 打赏
  • 举报
回复
json我不懂。 不过我不是用XML的。 因为没有跨语言。 两端都是C#做的。 所以直接把对象序列化为二进制流进行传输的。 我觉得奇怪的是。流程一里 完成了一遍 对数据对象的 序列化和反序列化。 这里应该是证明了 两端的包含数据对象的那个程序集的版本信息之类的东西都一致了, 才能在B端成功反序列化的。 为什么反向的时候就不行了。。。。
马少华 2012-12-03
  • 打赏
  • 举报
回复
你引用了也没用,activex可不能获取服务器端的程序集

110,584

社区成员

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

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

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