为什么不能在远程网络机器上访问WCF Restful服务?
问题描述:
我在使用RESTful Web服务在本地网络上工作时遇到问题。直到最近他们工作得很好,我不知道有什么改变,我希望有人可以给我一个检查的清单,以确保我所有的设置都很好。我创建了一个非常简单的测试应用程序,以查看它是我的代码还是我的网络设置本身。我创建了Visual Studio 2010的一个C#的WinForms解决方案,并加入到这个窗体的onload处理:为什么不能在远程网络机器上访问WCF Restful服务?
ServiceHost host = new ServiceHost(typeof(BasicService));
string baseUri = "http://" Environment.MachineName + ":876/testing";
ServiceEndpoint point = host.AddServiceEndpoint(typeof(IBasicService), new WebHttpBinding(), baseUri);
point.Behaviors.Add(new WebHttpBehavior());
host.Open();
服务只是返回一个字符串。我能够在本地机器上打开我的浏览器,并看到返回的字符串很好。我曾经能够在本地网络上的其他计算机/设备上看到这一点,但是现在当我尝试从远程计算机上收到502错误代码时。是否有可能我需要某种证书或网络设置切换?
答
它不会工作,因为“本地主机”总是意味着当前的机器。当远程系统尝试访问它时,它将真正访问自己!
您需要使用与运行服务的计算机的外部可见IP地址关联的DNS名称。
我的家庭网络上没有DNS服务器,我只想在那里暴露服务。当它工作时,我使用了Environment.MachineName来替代localhost,它只是在一天内莫名其妙地停下来。 –
您需要使用机器名称或IP地址 –