我有一个自我托管的REST服务(在C#中),它在我的本地网络中完美工作,但无法远程无法访问。这是我的托管代码:WCF REST服务(自托管)只能在本地网络访问(并且必须远程访问)
static Uri baseAddress = new Uri("http://m.y.i.p:8080");
WebServiceHost serviceHost = new WebServiceHost(typeof(WebService.RestService),
baseAddress);
serviceHost.Open();
(它在Windows窗体中运行,BTW)。
这里是App.Config中:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<bindings>
</bindings>
<services>
<service name="WebService.RestService" behaviorConfiguration="Default">
<host>
<baseAddresses>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding"
behaviorConfiguration="webBehavior"
contract="WebService.ICarga">
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<dataContractSerializer maxItemsInObjectGraph="2147483647"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
时,在浏览器中,我进入10.1.1.1:8080/test,它表明正是我想要的。但是当我输入m.y.i.p:8080/test时,它是无法访问的。防火墙关闭,我以管理员身份运行,并已尝试使用netsh命令。端口8080被正确地转发到我的电脑。我怎样才能使这个远程访问?
谢谢。
编辑: 对于未来的人来说,我的路由器有问题(我的ip改了,我没有在路由器上改变它)。如果你定义你的App.config权限,一切都应该工作。如果遇到此问题,请仔细检查您的代码,确保您的网络按照预期的方式工作,如果需要关闭防火墙,并且如果您不是管理员,请使用this question或this MS page的答案来拥有所需的端口。
这听起来更像是DNS – Yahia
一个问题,我想这是不是DNS,因为这些测试之前,我用Apache在同一个端口和它的工作(当然,我现在不使用Apache)。 – user1531978
没有足够的信息来帮助...检查事件日志... – Yahia