急迫!!!如何突破防火墙访问远程对象。

kintsoon 2004-08-26 11:05:34
用.net Remoting实现的程序,系统架构是C/S架构。问题如下:
我用的是Http信道来访问远程对象,当只是传递一些字符串信息时,这时候没有问题,可以正常访问,因为防火墙那边将我需要的端口(Tcp、Udp两种)公开出来了。
在远程对象中公开了一个接口用于获取远程服务器的文件,返回一个FileStream对象:
public FileStream GetFile(string FileName)
{
}
然后我在客户端调用这个方法,出现错误:基础连接已经关闭,无法连接到远程服务器
这是怎么回事???
...全文
216 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
tvrxk 2004-10-07
  • 打赏
  • 举报
回复
用httpchannel与IIS相接合方式是可以的,我这样用的,是可以传一个文件流的
cc79 2004-08-26
  • 打赏
  • 举报
回复
用80端口不行?如果你防问的不是一个iis服务器应该可以开放80端口吧
robin0925 2004-08-26
  • 打赏
  • 举报
回复
对阿!在web中调用api极不方便,是一个缺陷,希望winform+webservice能弥补!
ajqc 2004-08-26
  • 打赏
  • 举报
回复
看你的代码是想进行文件读取和写入操作吧
这样的话,只要分成2个到4个函数,完成你的要求,中间只传递结果和参数.尽量少传递对象.这样不单快,而且在网络使用率和服务器端CPU占有率上都大有好处
如果你E文还行的话,我强烈推荐你看一篇文章,全是一些REMOTING的心得
http://www.thinktecture.com/Resources/RemotingFAQ/RemotingUseCases.html
速马 2004-08-26
  • 打赏
  • 举报
回复
Stream没有一个能序列化的,很明显的事情
但是你可以传送byte[]
xinshaw 2004-08-26
  • 打赏
  • 举报
回复
严重同意 C/S + Webservice
kintsoon 2004-08-26
  • 打赏
  • 举报
回复
谢谢大家关注!
kintsoon 2004-08-26
  • 打赏
  • 举报
回复
to:ajqc(失眠无神闷坐中)
你说的:在服务器上多做的工夫,把代码封闭成函数
这个怎么说,我不明白,望赐教。。
kintsoon 2004-08-26
  • 打赏
  • 举报
回复
to: eboywy(飞影)
或许是我设计失误吧,但是,现在已经是这样做了。
to:dattotzy(酋长)
你的建议不错,返回DataSet是没有问题的。我会试试将文件读到DataSet里。
ajqc 2004-08-26
  • 打赏
  • 举报
回复
要序列化
双方要直连才行.
你这样传个FileStream过去是很笨的方法,应该在服务器上多做的工夫,把代码封闭成函数,这样会快,而且穿透性更强,也方便异步.

to flower_open(宫爆鸡丁)
WS什么时候变得在传对象上比REMOTING强了?
WS就算上了WSE2.用TCP也比不上REMOTING快.上了TCP就不能穿防火墙.WS的资源占有率永远比REMOTING高.需要那么多的跨平台吗?不要动不动就搬这条出来.就算是企业用户,客户端一样是WIN占绝大多数.对于C/S来说,REMOTING就是强,不过它的复杂性和开发时(其实是测试时)硬件要比WS高得多.什么时候WS把低访问量时的性能问题和能把数据2进式序列化时我就用WS了
yingshis 2004-08-26
  • 打赏
  • 举报
回复
up
flower_open 2004-08-26
  • 打赏
  • 举报
回复
WebService可以穿透防火墙的,还能传对象,而且平台无关
flower_open 2004-08-26
  • 打赏
  • 举报
回复
WebService让cs再次雄起
酋长 2004-08-26
  • 打赏
  • 举报
回复
用BS。Webservice
有防火墙还用CS是设计失误。
=============》》》????
他可能是说的有问题,而不应该是设计有问题吧

以后的方向估计就是:WinForm + WebService + Xml方式
eboywy 2004-08-26
  • 打赏
  • 举报
回复
PS:如果是你自己的防火墙你可以开放端口。
但如果是公网上的路由,和防火墙,你怎么办?
酋长 2004-08-26
  • 打赏
  • 举报
回复
在webService远程传输数据的时候,是不是不能以文件流的方式传递?
你尝试着把文件读取到DataSet中,然后在远程调用DataSet得到文件看看:)
我研究的没有这么深,只是简单的读取测试,还没有真正用到实践中。
eboywy 2004-08-26
  • 打赏
  • 举报
回复
用BS。Webservice
有防火墙还用CS是设计失误。
kintsoon 2004-08-26
  • 打赏
  • 举报
回复
同一个类中,接口(获取服务器端某个目录下的所有子目录)
public string[] GetDirectories(string strDir)
{
}
是可以返回我想要的东东的。
kintsoon 2004-08-26
  • 打赏
  • 举报
回复
to: xiangding
防火墙已经开放那个端口了,要不然连正常的字符串都不能通过的。
robin0925 2004-08-26
  • 打赏
  • 举报
回复
牛人!关注!
加载更多回复(5)

110,500

社区成员

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

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

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