2016-07-11 5 views
2

HTTP/WCFを使用してローカルネットワークを介して通信する2つのアプリケーションを取得しようとしています。マスターはWebリクエストを作成し、それぞれがWebサービスを実行しているスレーブアプリケーションを探します。スレーブはlocalhost:\\[MACHINENAME]:8000同じネットワーク上で通信するコンピュータ

に応答するように設定されています。スレーブをマスタと同じコンピュータで実行しても、同じネットワーク上の別のコンピュータでスレーブを実行しても機能しません。私はコンピュータがcmdプロンプト[MachineName]によって同じネットワーク上にあることを確認します。同じネットワーク上の別のコンピュータに要求を送信するためには何が必要ですか?

スレーブは、Webサービスをセットアップします。それをブロックする

public void Run() 
     { 
      Config config = Config.validateAndCreate(); 
      string machineName = System.Environment.MachineName; 
      string baseAddress = "http://" + machineName + ":" + config.port; 
      Service.setConfig(config); 

      if (new Service().UpdateScripts().status != ExecStatus.OK) 
      { 
       throw new Exception("Failed to update scripts"); 
      } 

      using (WebServiceHost host = new WebServiceHost(typeof(Service), new Uri(baseAddress))) 
      { 
       host.Description.Behaviors.Add(new ServiceMetadataBehavior { HttpGetEnabled = true }); 
       host.Description.Behaviors.Find<ServiceDebugBehavior>().IncludeExceptionDetailInFaults = true; 
       host.Description.Behaviors.Find<ServiceDebugBehavior>().HttpHelpPageEnabled = false; 

       ServiceEndpoint ep = host.AddServiceEndpoint(typeof(IService), new WebHttpBinding(), ""); 

       host.Open(); 
       log.Info("Service is running at: " + baseAddress); 
       log.Info("Press the 'q' key to quit..."); 
       while (Console.ReadKey(true).Key != ConsoleKey.Q) { } 
       host.Close(); 
      } 
     } 
+0

実行中のWindowsファイアウォールなどのファイアウォールはありますか?それはそれを止める最も可能性の高いものです。 –

+0

私はチェックします!ファイアウォールがブロックしているかどうかを確認する方法はありますか? – Lautaro

+0

httpを使用している場合、最も簡単なチェックはウェブブラウザを使用しています。 –

答えて

0

最も可能性が高い事がファイアウォールです。サードパーティ製のファイアウォールを追加していない場合は、Windowsファイアウォール(既定ではオンになっています)がそのファイアウォールをブロックします。

ファイアウォールに例外を追加して、そのポート上のトラフィックをアプリケーションにルーティングできるようにする必要があります。

「スタート」をクリックし、「セキュリティが強化されたWindowsファイアウォール」と入力します。

[受信ルール] - > [新しいルール]をクリックし、必要に応じてプログラムルールまたはポートルールを追加します。

関連する問題