1

我刚刚进入 WCF 编程。我在防火墙后面的工作计算机上设置了一个自托管的测试 Web 服务;它在http://localhost:8000/MyTestService。我可以通过浏览器访问服务页面;一切正常。

现在我想从位于不同网络上的家用计算机访问该服务。我有一个动态 dns(称为 mydomain.dyndns.org)设置为指向我的工作路由器。经测试, dyndns 指向正确的地址。

现在我已经在我的家用电脑上安装了一个测试应用程序来连接我的网络服务。因此,我将 NAT 配置为将端口 8000 上的请求转发到相同端口号上的工作计算机。

在我的家用电脑上,我现在打开浏览器并导航到http://mydomain.dyndns.org:8000/MyTestService. 无所事事。

显然我错过了关于 NAT 和端口转发的一些真正基础的东西......但正如我所说,我在编程的这方面有点新,我非常感谢这里的一些指导!

4

2 回答 2

4

您是否看到错误或空白页面?你能从防火墙后面的计算机上检查 canyouseeme.org 端口是否真的打开了吗?您可以使用 sysinternals tcpview 等工具检查连接尝试到达这台计算机而不仅仅是路由器吗?

于 2010-12-24T10:59:40.457 回答
2

我有同样的问题。

在这个话题的帮助下。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);
于 2013-02-22T15:08:55.783 回答