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]:8000
Computer 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();
}
}
Haben Sie eine Firewall (z. B. die integrierte Windows-Firewall) ausgeführt? Das ist die wahrscheinlichste Sache, um es aufzuhalten. –
Ich werde überprüfen! Gibt es eine Möglichkeit zu sagen, ob die Firewall blockiert? – Lautaro
Die einfachste Überprüfung ist der Webbrowser, wenn Sie http verwenden. –