.net Remoting中报告Binary Fomatter版本冲突问题

本文探讨了Remoting中Binary Fomatter版本冲突问题。采用IIS远程代理对象调用,传递信息用Binary Fomat时可能报错。原因是服务器端错误被IIS处理成404、500等信息发给客户端,客户端按BinaryFormatter处理报错。给出解决方法,如用TcpTrace捕捉异常,客户端判断能否访问Remoting对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何处理Remoting中报Binary Fomatter版本冲突问题
问题:

采用IIS进行远程代理对象调用时,如果传递的信息格式采用Binary Fomat而不是soap时,则有可能报这个错误。
该错误报错的信息如下:“BinaryFormatter 版本不兼容。应为版本 1.0。接收到的版本为 1818838574.1953451621。”


原因:
引起该错误的原因其实不是版本冲突问题,一般错误是由于服务器端产生错误,IIS将该错误以网站方式处理成404,500等相应错误提示信息,并发送给客户端,而客户端接收到错误信息时,则按BinaryFormatter方式处理,这样,客户端在处理错误信息时,遇到了<html>...时就会报出该错误。


解决方法:
可采用工具在服务器端捕捉服务器端抛出的异常信息是什么,根据该信息处理错误。
捕捉服务器及客户端的通讯信息软件很多,我用的是www.pocketsoap.com的TcpTrace工具,在服务器端运行TcpTrace,将Listen Port改为81,并开始监听,在另一台客户端电脑上,修改客户端软件的Chennel Port为81,如果是配置文件,则应修改配置文件内容,运行客户端软件,并启动。TcpTrace将捕捉所有通讯信息,包括异常。
根据异常修改程序即可。
在客户端要首先判断是否可以访问到服务器端的Remoting对象,判断方法如下:
在客户端启动IE浏览器,并在地址栏输入:“http://RemotingServerSite/RemotingService/ServiceClass.rem?wsdl”,以上的RemotingServerSite为服务器地址,RemotingService为IIS上的虚拟目录名称,ServiceClass则为服务器端的远程对象类名。
http://localhost/NetDraw/Paper.rem?wsdl

www.pocketsoap.com 的TcpTrace工具,在服务器端运行TcpTrace,将Listen Port改为81,并开始监听,在另一台客户端电脑上,修改客户端软件的Chennel Port为81,如果是配置文件,则应修改配置文件内容,运行客户端软件,并启动。TcpTrace将捕捉所有通讯信息,包括异常。
根据异常修改程序即可。
在客户端要首先判断是否可以访问到服务器端的Remoting对象,判断方法如下:
在客户端启动IE浏览器,并在地址栏输入:“http://RemotingServerSite/RemotingService/ServiceClass.rem?wsdl”,以上的RemotingServerSite为服务器地址,RemotingService为IIS上的虚拟目录名称,ServiceClass则为服务器端的远程对象类名。
http://localhost/NetDraw/Paper.rem?wsdl

以上仅讨论Remoting采用WellKnownType的情况。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值