防火墙背后的WCF服务 - 如何设置端口转发?
-
13-10-2019 - |
题
我只是进入WCF编程。我在工作计算机上设置了一个自托管测试网络服务,该网络计算机是防火墙后面的;它在 http://localhost:8000/MyTestService
. 。我可以通过浏览器访问服务页面;所有工作正常。
现在,我想从不同网络上的家用计算机访问该服务。我有一个动态的DNS(称其为mydomain.dyndns.org),以指向我的工作路由器。已经测试过,Dyndns指向正确的地址。
现在,我已经在家用计算机上安装了一个测试应用程序,以连接到我的Web服务。因此,我在同一端口号上将端口8000上的NAT配置为端口8000上的转发请求。
在我的家计算机上,我现在打开一个浏览器并导航到 http://mydomain.dyndns.org:8000/MyTestService
. 。无所事事。
显然,我缺少关于NAT和端口转发的真正根本性的东西……但是正如我所说,在编程的这一方面,我有点新手,我真的很感谢这里的一些指导!
解决方案
您看到错误还是空页面?您可以从防火墙后面的计算机上检查canyouseeme.org吗?您可以使用Sysinternals TCPView等工具检查连接尝试到达该计算机而不只是路由器吗?
其他提示
我有同样的问题。
经过此台阶的很好的帮助。 http://www.codeproject.com/questions/140317/wcf-services-and-windows-firewall. 。我的WCF服务即使在防火墙活动中也可以在本地LAN上运行良好。
但是它无法通过互联网访问。端口转发后,我可以看到服务描述。但是我无法使用它。
本文 http://gavinmckay.wordpress.com/2009/03/24/howto-fix-fix-wcf-host-name-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);
祝你好运