WCF通过互联网启动net.tcp服务

时间:2011-12-15 14:54:54

标签: c# wcf

我这样启动我的WCF服务:

host = new ServiceHost(typeof(Host), new Uri("net.tcp://127.0.0.1:40000"));
host.AddServiceEndpoint(typeof(IHost), new NetTcpBinding(), "");
host.Open();

和客户端应用程序连接到它:

IProxy proxy = new DuplexChannelFactory<IProxy>(callback, new NetTcpBinding(), new EndpointAddress("net.tcp://127.0.0.1:40000")).CreateChannel();

工作正常。我可以连接到服务器并交换数据。问题是如何启动此服务(服务器),以便网络外部的计算机可以通过互联网连接到它?

3 个答案:

答案 0 :(得分:2)

您需要将IP地址从环回(127.0.0.1)更改为外部IP地址(通过www.whatismyip.com查找)。

然后,如果您在防火墙后面,则需要允许端口40000通过。如果你在路由器后面,你需要将端口40000转发到你的本地IP地址(打开命令提示符并输入ipconfig - 你会得到它)。

之后,您需要使用外部IP地址更改客户端连接字符串。

答案 1 :(得分:0)

确保没有个人防火墙,如果您在路由器/代理后面,请确保已启用端口转发或将服务器设置为DMZ。如果服务器具有动态IP,则最好将其分配为静态IP,以便计算机重新启动(无论出于何种原因)以后不会弄乱设置。

基本上,防止任何允许传入连接看不到服务器和托管服务的端口。显然,所有这些都伴随着对安全性的某些期望,并确保您不会让自己成为受害者。 (关键是允许最低限度地完成工作 - 不多或少)。

答案 2 :(得分:0)