高分请教:在Remoting中使用TcpChannel时为何收不到远程实例化的代理对象? 我将服务器接到防火墙的外面,就什么问题都没有了,既能从外部访问服务,也能从内网访问服务。但明显我的服务器是不能接到防火墙外部的。而且将服务器放到防火墙内部时,HTTP等高层TCP服务都运行正常,就是Remoting中的TcpChannel不能正常运行。请高手指点! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 TcpChannel chan = new TcpChannel(5525);?? 这种情况下简单使用应该没有问题,建议先跟一下Server对象是否建立成功(应该是成功的),或者调用Remoting Object的一些简单方法(obj.ToString())。只有在Remoting Object的方法参数或者返回值里面包含了其它MarshalByRefObject的时候才会出错。 你走HTTP协议试试:在服务器端再加入: IChannel httpChannel = new HttpChannel(6595); ChannelServices.RegisterChannel(httpChannel);TcpChannel chan = new TcpChannel(5525);ChannelServices.RegisterChannel(chan);Type serviceType = Type.GetType("DigitalCampus.ModuleServices");RemotingConfiguration.RegisterWellKnownServiceType(serviceType,"moduleServices",WellKnownObjectMode.Singleton); 要进行远程调用的对象必须继承自MarshalByRefObject或间接继承自MarshalByRefObject TO: qqchen79(知秋一叶 [MS MVP]) 我的方法参数和返回值中只有如下几种类型的数据:string int enum 和 DataSet如果TcpChannel中也只能使用简单数据类型才能穿越防火墙的话,那不是与HttpChannel和Web Service就没有什么区别了么? 其它的MarshalByRefObject对象不是不能用,只是需要特殊的配置。因为在CAO环境下服务器应该返回firewall的IP作为CAO对象的URL而不是内网IP。但是如果你的调用方法只有简单类型作为参数和返回值,那多半是服务器或者firewall的设置有问题了。你可以照我前面说的那样调用一些简单的方法(ToString()),然后再服务器端用vs.net调试,看看调用究竟有没有正确传递到服务器端(设断点)。 TO: qqchen79(知秋一叶 [MS MVP]) 的确没有什么问题,原来是程序设计有一点小小的错误,引起的外网不能访问!谢谢! 一个SQL语句的问题 c#gdi如何让圆在屏幕上随机移动,当圆接触到边缘时就改变方向 关于引用对象初始化的问题 关于RTF发送文字、图片的问题 网页视频聊天 判断时间段交叉问题,请大家给看看。 讨论:客户端通过访问WebService达到更新数据的目的,有什么好的方法?顶的有分。 WinForm程序,照片采集! 在Text框里输入<8000个字符后,怎么把它变成nvarchar类型? 解析pdf文件的一些疑问 窗口最小化到系统栏后怎么恢复? 升4角了,散分。顺便把以前翻译的两篇关于组件编程的文章给大家参考
??
只有在Remoting Object的方法参数或者返回值里面包含了其它MarshalByRefObject的时候才会出错。
在服务器端再加入: IChannel httpChannel = new HttpChannel(6595);
ChannelServices.RegisterChannel(httpChannel);TcpChannel chan = new TcpChannel(5525);
ChannelServices.RegisterChannel(chan);
Type serviceType = Type.GetType("DigitalCampus.ModuleServices");
RemotingConfiguration.RegisterWellKnownServiceType(serviceType,"moduleServices",WellKnownObjectMode.Singleton);
string int enum 和 DataSet如果TcpChannel中也只能使用简单数据类型才能穿越防火墙的话,那不是与HttpChannel和Web Service就没有什么区别了么?
谢谢!