2016-07-11 4 views
2

Ich versuche, zwei Anwendungen über ein lokales Netzwerk mit HTTP/WCF zu kommunizieren. Der Master erstellt Web-Anfragen und sucht nach Slave-Anwendungen, auf denen jeweils ein Web-Service läuft. Die Slaves sind so konfiguriert, dass sie auf localhost:\\[MACHINENAME]:8000Computer kommunizieren im selben Netzwerk

antworten. Es funktioniert, wenn ich den Slave auf dem gleichen Computer wie der Master ausführen, aber nicht, wenn ich es auf einem anderen Computer im selben Netzwerk ausführen. Ich bestätige, dass die Computer über die Cmd-Eingabeaufforderung Ping [MachineName] im selben Netzwerk sind. Was ist erforderlich, um Anfragen an einen anderen Computer im selben Netzwerk zu senden?

Slave einrichtet webservice:

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

Haben Sie eine Firewall (z. B. die integrierte Windows-Firewall) ausgeführt? Das ist die wahrscheinlichste Sache, um es aufzuhalten. –

+0

Ich werde überprüfen! Gibt es eine Möglichkeit zu sagen, ob die Firewall blockiert? – Lautaro

+0

Die einfachste Überprüfung ist der Webbrowser, wenn Sie http verwenden. –

Antwort

0

Die wahrscheinlichste Sache zu blockieren es eine Firewall ist. Wenn Sie keine Firewall eines Drittanbieters hinzugefügt haben, wird die Windows-Firewall (die standardmäßig aktiviert ist) diese blockieren.

Sie müssen der Firewall eine Ausnahme hinzufügen, damit der Datenverkehr auf diesem Port an Ihre Anwendung weitergeleitet werden kann.

Klicken Sie auf "Start" und geben Sie "Windows-Firewall mit erweiterter Sicherheit" ein.

Klicken Sie auf "Eingehende Regeln" -> Neue Regel und fügen Sie je nach Bedarf entweder eine Programmregel oder eine Portregel hinzu.