C# 无法从本地网络外部连接到WCF服务

C# 无法从本地网络外部连接到WCF服务,c#,wcf,C#,Wcf,我正在学习编写WCF服务,我用我正在阅读的书中的示例一步一步地编写了我的简单服务。这项服务在我的电脑和连接到本地网络的所有设备上都能正常工作。当我尝试从本地网络的“外部”连接时,如果无法看到服务(通过我编写的客户端应用程序和浏览器(MEX))。 我的主机app.config: <system.serviceModel> <services> <service name="WCF_1_MagicEightBallService.Ma

我正在学习编写WCF服务,我用我正在阅读的书中的示例一步一步地编写了我的简单服务。这项服务在我的电脑和连接到本地网络的所有设备上都能正常工作。当我尝试从本地网络的“外部”连接时,如果无法看到服务(通过我编写的客户端应用程序和浏览器(MEX))。

我的主机app.config:

    <system.serviceModel>

      <services>
       <service name="WCF_1_MagicEightBallService.MagicEightBallService"
                behaviorConfiguration="MagicEightBallServiceMEXBehavior">

         <endpoint address=""
                   binding="basicHttpBinding"
                   contract="WCF_1_MagicEightBallService.IMagicEightBall">
         </endpoint>

         <endpoint address="mex"
                   binding="mexHttpBinding"
                   contract="IMetadataExchange">
         </endpoint>

         <host>
           <baseAddresses>
             <add baseAddress="http://[my ip]:8080/MagicEightBallService"/>
           </baseAddresses>
         </host>

       </service>
      </services>

      <behaviors>
        <serviceBehaviors>
          <behavior name="MagicEightBallServiceMEXBehavior">
            <serviceMetadata httpGetEnabled="true"/>
            <useRequestHeadersForMetadataAddress/>
          </behavior>
        </serviceBehaviors>
      </behaviors>

  </system.serviceModel>


我的ip是我的外部ip,但我尝试过在使用和不使用wifi路由器以及不同端口的情况下使用ip。

因此,正如Cameron在评论中提到的,问题在于ISP阻塞了我的端口。这个答案可能有点离题,但对于每个有类似问题的人来说,这里是我所做的:

  • 使用基于控制台的免费实用程序“nmap”扫描打开的端口,命令为:
    nmap target.hostname.com
  • 然后,我重新检查了所有具有“未知”服务的端口(当然,您可以使用任何其他网站)。它们都是打开的,并且使用Windows命令:
    netstat-aon | find/i“监听”| find“端口”
    我得到了使用它们的应用程序的PID
  • 我选择了我不需要运行的应用程序使用的端口,将其关闭,并将该端口用于承载我的WCF服务的网站的IIS服务器绑定

  • 它起作用了,我可以通过我的外部IP地址远程访问。

    除非你有一个商业互联网计划,否则你的ISP很可能会阻止大多数默认web端口(25、80、8080、443等)。@Cameron所以我没有办法自己托管web服务?可以使用IIS托管帮助吗?您可以在IIS内托管它,只需使用非默认端口即可。只需在以下两者之间选择一个数字。。。10000和65535。