2017-07-07 20 views
0

私はWCFサービスを書くことを学んでおり、私が読んでいる本の例を参考にしながら、ステップバイステップで簡単なサービスを書いています。サービスは私のPCと私のローカルネットワークに接続されているすべてのデバイス上で正常に動作します。サービスを見ることができない場合(私が書いたクライアントアプリケーションとブラウザ(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ですが、私はとし、無線LANルーターを使用せずに、別のポートとIPを使用して試してみました。

+1

商用インターネットプランがない限り、ISPはほとんどのデフォルトWebポート(25,80,8080,443など)をブロックする可能性があります。 – Cameron

+0

@Cameronので、自分でWebサービスをホストする方法はありませんか? IISでホスティングできますか? – Bibipkins

+1

IIS内でホストすることができます。デフォルト以外のポートを使用するだけで済みます。 ... 10000と65535の間の番号を選んでください。 – Cameron

答えて

0

コメントにCameronが述べたように、問題はISPが私のポートをブロックしていたことでした。この回答は、トピックオフ少しかもしれないが、同様の問題を持つすべての人のために、ここで私がやったこと:
nmapのをtarget.hostname:

  1. は、コマンドを使って自由にコンソールベースのユーティリティ「nmapの」と開いているポートをスキャンしました。 com
  2. 「不明」のサービスを持つすべてのポートをhttp://www.yougetsignal.com/tools/open-ports/と再確認しました(もちろん、他のどのWebサイトも使用できます)。彼らはすべて開いていて、Windowsのコマンドを使っていた:
    netstat -aon | find/i "listening" | "port"を見つける
    私はそれらを使っていたアプリケーションのPIDを得た。
  3. アプリケーションで使用するポートを選択しましたが、実行する必要はありません。これを閉じて、そのポートをIISサーバーのバインド用に使用して、WCFサービスをホストしていました。

私の外部IPアドレスからリモートアクセスが可能でした。

関連する問題