我这样启动我的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();
工作正常。我可以连接到服务器并交换数据。问题是如何启动此服务(服务器),以便网络外部的计算机可以通过互联网连接到它?
答案 0 :(得分:2)
您需要将IP地址从环回(127.0.0.1)更改为外部IP地址(通过www.whatismyip.com查找)。
然后,如果您在防火墙后面,则需要允许端口40000通过。如果你在路由器后面,你需要将端口40000转发到你的本地IP地址(打开命令提示符并输入ipconfig - 你会得到它)。
之后,您需要使用外部IP地址更改客户端连接字符串。
答案 1 :(得分:0)
确保没有个人防火墙,如果您在路由器/代理后面,请确保已启用端口转发或将服务器设置为DMZ。如果服务器具有动态IP,则最好将其分配为静态IP,以便计算机重新启动(无论出于何种原因)以后不会弄乱设置。
基本上,防止任何允许传入连接看不到服务器和托管服务的端口。显然,所有这些都伴随着对安全性的某些期望,并确保您不会让自己成为受害者。 (关键是允许最低限度地完成工作 - 不多或少)。
答案 2 :(得分:0)
您可以在iis7中托管它。它支持net.tcp绑定
http://blogs.msdn.com/b/swiss_dpe_team/archive/2008/02/08/iis-7-support-for-non-http-protocols.aspx