Remoting 外网访问和内网访问解决方案

最近解决公司一个老平台的问题,该平台中使用了 Remoting 技术,现有的环境大致如下:

1、Remoting 服务和 Web 都是部署在局域网;

2、多台 Web 都是通过内网 IP 和端口来访问 Remoting 。

Remoting 服务端的代码如  

 
 
int serverPort = 10000;      TcpServerChannel Channel = new TcpServerChannel(serverPort);      ChannelServices.RegisterChannel(Channel, false);  RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingServer),"Server.RemotingServer",WellKnownObjectMode.Singleton);      Console.ReadLine();
TcpServerChannel Channel = new TcpServerChannel(serverPort);      ChannelServices.RegisterChannel(Channel, false);  RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemotingServer),"Server.RemotingServer",WellKnownObjectMode.Singleton);      Console.ReadLine();

现在的问题是,Web 和 RemontingServer 都是部署在外网,有一个客户端程序需要通过 Remoting 来连接到外网到 RemotingServer ,这时需要将服务端的代码修改如下:

     
     
1
2
3
4
5
6
7
8
9
10
11
12
13
14
     
     
string serverIP = "40.1.1.11"; //外网IP
string serverPort = "10000";
var properties = new Dictionary< string, string>();
properties[ "machineName"] = serverIP;
properties[ "port"] = serverPort;
var sinkProvider = new BinaryServerFormatterSinkProvider();
var Channel = new TcpServerChannel( properties, sinkProvider);
ChannelServices.RegisterChannel(Channel, false);
RemotingConfiguration.RegisterWellKnownServiceType
(typeof(RemotingServer),
"Server.RemotingServer",
WellKnownObjectMode.Singleton);
Console.ReadLine();

像上面这样修改后,本地客户端可以正常连接 RemotingServer ,但部署在外网的Web就不能访问 RemotingServer 了。如果将上面代码的 serverIP 修改成内网 IP ,外网 Web 可以访问,本地客户端又不能访问了。最后的解决方法是:

1、Remoting 服务端代码中的 serverIP 使用服务器的机器名,假设机器名为 RemotingServer ,代码如下:

     
     
string serverIP = "RemotingServer"; //服务器机器名
string serverPort = "10000";
var properties = new Dictionary< string, string>();
properties[ "machineName"] = serverIP;
properties[ "port"] = serverPort;
var sinkProvider = new BinaryServerFormatterSinkProvider();
var Channel = new TcpServerChannel( properties, sinkProvider);
ChannelServices.RegisterChannel(Channel, false);
RemotingConfiguration.RegisterWellKnownServiceType
(typeof(RemotingServer),
"Server.RemotingServer",
WellKnownObjectMode.Singleton);
Console.ReadLine();

2、修改本地 hosts 文件,将外网 IP 40.1.1.11映射为 RemotingServer 




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值