我刚刚进入WCF编程。我在我的工作计算机上设置了一个自托管测试Web服务,它位于防火墙后面;它在http://localhost:8000/MyTestService
。我可以通过浏览器访问服务页面;一切正常。
现在,我想从家用计算机访问该服务,该计算机位于不同的网络上。我有一个动态的dns(称之为mydomain.dyndns.org)设置为指向我的工作路由器。经过测试,dyndns正指向正确的地址。
现在我已在家用计算机上安装了测试应用程序以连接到我的Web服务。所以我将端口8000上的转发请求的NAT配置到我的工作计算机上,在同一个端口号上。
在我的家用电脑上,我现在打开浏览器并导航到http://mydomain.dyndns.org:8000/MyTestService
。什么也没做。
显然我遗漏了一些关于NAT和端口转发的真正基本内容......但正如我所说,我在编程的这方面有点新意,我真的很感激这里的一些指导!
答案 0 :(得分:4)
您是否看到错误或空白页?你可以从防火墙后面的计算机上查看canyouseeme.org,该端口真的是开放的吗?您是否可以使用sysinternals tcpview等工具检查连接尝试是否到达此计算机而不仅仅是路由器?
答案 1 :(得分:2)
我遇到了同样的问题。
经过这个toppic的良好帮助后。 http://www.codeproject.com/Questions/140317/WCF-services-and-Windows-Firewall。即使防火墙处于活动状态,我的WCF服务也能在本地LAN上正常运行。但它无法通过互联网访问。 端口转发后,我可以看到服务描述。但我无法使用它。
这篇文章http://gavinmckay.wordpress.com/2009/03/24/howto-fix-wcf-host-name-on-iis/指出了我正确的方向。 该服务是可见的,但与Web服务器的连接将失败,因为WSDL指向未发布的服务器名称,而您的客户端将无法到达。
在我的情况下,我需要将自托管的wcf本地端点更改为公共端点。
1 Create a URI to serve as the base address.
Uri baseAddress = new Uri("http://publicdomain.com:8000/GettingStarted/");
// Step 2 Create a ServiceHost instance
ServiceHost selfHostRemote = new ServiceHost(typeof(MyService), baseAddress);
祝你好运