为什么不能在远程网络机器上访问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名称。

+0

我的家庭网络上没有DNS服务器,我只想在那里暴露服务。当它工作时,我使用了Environment.MachineName来替代localhost,它只是在一天内莫名其妙地停下来。 –

+0

您需要使用机器名称或IP地址 –