我应该如何托管我的服务,以便其他计算机可以使用Internet来使用myAppService

时间:2014-10-15 22:38:41

标签: c# wcf hosting

我创建了一个名为MyAppService的WCF服务。

现在,我不想在任何服务器上托管该服务。我想在我的电脑中托管它。我知道如何在控制台/ Windows应用程序,Windows服务和IIS中托管WCF服务。

但我在计算机中托管此服务时遇到问题。我的意思是简单地说我希望我的计算机能够用作服务器而其他计算机应该能够通过互联网从我的计算机上使用myAppService。

所以,我想问一下对我来说什么是最好的托管选项,我应该如何托管我的服务,以便其他计算机可以使用Internet来使用myAppService。还有一个问题:如果上面的问题解决了,那么我可以使用netTcpBinding还是必须使用一些HttpBinding?

1 个答案:

答案 0 :(得分:1)

我仍然不能100%肯定我正在回答正确的问题,但我会试一试。

我相信您的要求是:假设您在个人计算机上的IIS中托管服务,您如何允许其他人访问它?如果我的解释不正确,请提前接受我的道歉。

注意:我在这个答案中假设IPv4。 IPv6可能是一种选择,但这个答案不适用。

解决方案中有两个步骤,您可能会遇到或可能无法克服一些障碍。

  1. 将客户端的网络流量传输到您的公共IP地址。
  2. 将传入流量路由到您的计算机。
  3. 第1步

    您可以通过多种方式确定您的公共IP地址,其中一种方式是向Google询问:https://www.google.com/#q=what+is+my+ip

    障碍如下:

    1. 您的IP地址可能会不时更改。解决方案是使用动态DNS服务,例如http://dyn.com/dns/http://www.thatip.com/,或者可以在线找到的任何替代方案。这些服务将提供一个路由到您的公共IP的URL,它们将提供一种方法来保持您的公共IP最新,以便名称resoslution通常有效。请记住,DNS实时无法可靠地更改,因此,如果您的IP地址发生变化,您应该会遇到一些停机时间。

    2. 您的ISP可能会阻止传入的流量。是否以及如何解决这个问题取决于您的IP。具体来说,ISP通常会阻止传入端口20,22,23,25,80和443.您可以通过为服务选择非标准端口来解决端口阻塞问题。 (这可能不会影响您的WCF和IIS配置,如步骤2中所述。)

    3. 特别是如果您使用任何类型的共享公寓连接,您可能会发现自己没有自己的公共IP地址。如果是这种情况,那么你无能为力。如果您的路由器的WAN地址(或计算机的IP地址,如果您不使用路由器)是192.168。*或10. *范围,那么它的时间查看服务器选项。

    4. 第2步

      一旦客户端请求通过公共互联网路由到您的公共IP地址,就需要将其路由到您的计算机。

      最简单但最不常见的情况是,如果您的计算机直接连接到有线/ DSL调制解调器。在这种情况下,路由到您的公共IP的流量由您的计算机处理。这是您的WCF和IIS配置需要侦听客户端使用的实际端口的情况。例如,如果您的ISP阻止端口80,那么您可以将服务配置为侦听端口34323,这是客户端在服务调用中需要请求的端口。

      最常见的情况是您的有线/ DSL调制解调器连接了路由器。在这种情况下,您需要进入路由器上的管理控制面板并转发端口。例如,如果您的计算机配置为侦听传入服务请求的端口80,则可以将端口(例如,34323)转发到本地计算机上的端口80。如何转发端口因路由器而异。您应该可以通过浏览或进行互联网搜索来找到它。

      此处的障碍是您的本地IP地址可能会发生变化。您可以通过将其设置为路由器DHCP分配范围之外的静态地址或在路由器中设置DHCP预留来解决此问题。无论哪种方式都可行。我建议在互联网上搜索设置静态IP或在你的路由器管理设置中寻找DHCP预留。

      如果您的所有设置都正确无误,并且如果您的控件之外没有障碍物,则互联网上的客户端可以访问您的WCF服务。

      编辑: 我错过了谈论本地Windows防火墙问题。我可以进入那个,但是请允许我链接到这个很好地涵盖它的操作指南。 (请记住,从托管的角度来看,WCF服务在概念上类似于网站,因此大部分都适用。)http://www.pcstats.com/articleview.cfm?articleID=1774