2017-07-07 136 views
0

我正在學習編寫WCF服務,並且我正在閱讀本書中的示例,逐步地編寫了我的簡單服務。服務在我的個人電腦和連接到本地網絡的每臺設備上都能正常工作。當我嘗試從本地網絡的「外部」連接時,如果無法看到服務(通過客戶端應用程序(通過我寫的和通過瀏覽器(MEX)))。

我的主人的app.config:
無法連接到本地網絡以外的WCF服務

<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,但我一直在使用的IP使用和不使用無線路由器,並用不同的端口嘗試。

+1

除非您有商業互聯網計劃,否則您的ISP很可能會阻止大多數默認網絡端口(25,80,80,80,443等)。 – Cameron

+0

@Cameron所以沒有辦法自己託管網絡服務?可以託管IIS的幫助? – Bibipkins

+1

你可以在IIS中託管它,你只需要使用非默認端口。只需在... 10000和65535之間選擇一個數字即可。 – Cameron

回答

0

所以,正如在評論中提到的卡梅隆,問題在於ISP阻止了我的端口。這個答案可能是題外話了一點點,但爲大家類似的問題,在這裏我所做的:

  1. 掃描開放的端口與基於控制檯免費的實用工具「的nmap」帶命令:
    NMAP target.hostname。 com
  2. 然後我用http://www.yougetsignal.com/tools/open-ports/(當然,您可以使用任何其他網站)重新檢查所有帶有「未知」服務的端口。他們都是開放的,並使用Windows命令:
    netstat -aon | find/i「listen」| find「port」
    我得到了正在使用它們的應用程序的PID。
  3. 我選擇了我不需要運行的應用程序使用的端口,關閉它並將該端口用於承載我的WCF服務的網站的IIS服務器綁定。

它的工作,我可以通過我的外部IP地址遠程訪問。