2013-08-19 54 views
0

我有一个自我托管的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 questionthis MS page的答案来拥有所需的端口。

+1

这听起来更像是DNS – Yahia

+0

一个问题,我想这是不是DNS,因为这些测试之前,我用Apache在同一个端口和它的工作(当然,我现在不使用Apache)。 – user1531978

+0

没有足够的信息来帮助...检查事件日志... – Yahia

回答

1

变化

new Uri("http://m.y.i.p:8080"); 

new Uri("http://0.0.0.0:8080"); 
+0

感谢您的答案,但它仍然无法访问... – user1531978

+0

+1,因为这将帮助我,现在我知道我不需要设置我将在每台PC上使用我的程序。 – user1531978

相关问题