在同一网络上通信的计算机

时间:2016-07-11 11:55:51

标签: c# asp.net windows wcf

我试图让两个应用程序使用HTTP / WCF通过本地网络进行通信。 Master发出Web请求并查找每个都运行Web服务的Slave应用程序。从站配置为回答localhost:\\[MACHINENAME]:8000

当我在与主服务器相同的计算机上运行从服务器时,它工作,但是当我在同一网络上的另一台计算机上运行它时。我通过cmd提示符Ping [MachineName]确认计算机在同一网络上。将请求发送到同一网络上的另一台计算机需要什么?

Slave设置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();
            }
        }

1 个答案:

答案 0 :(得分:0)

阻止它的最可能的事情是防火墙。如果您尚未添加第三方防火墙,则Windows防火墙(默认情况下已启用)将阻止它。

您需要向防火墙添加例外,以允许将该端口上的流量路由到您的应用程序。

单击“开始”,然后键入“具有高级安全性的Windows防火墙”。

点击“入站规则” - &gt;新规则,并根据需要添加程序规则或端口规则。