WCF REST服务(自托管)仅可在本地网络中访问(并且必须远程访问)

时间:2013-08-19 19:19:08

标签: c# wcf wcf-rest self-hosting

我有一个自托管的REST服务(在C#中),它在我的本地网络中运行良好,但远程无法访问。这是我的托管代码:

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正确转发到我的PC。如何远程访问?

感谢。

编辑: 对于将来对此进行调查的人来说,我的路由器出了问题(我的ip改了,我没有在路由器中更改它)。如果你正确定义你的App.config,一切都应该工作。如果您遇到此问题,请仔细检查您的代码,确保您的网络按预期方式运行,如果需要请关闭防火墙,如果您不是管理员,请使用this question或{{的答案3}}拥有你想要的端口。

1 个答案:

答案 0 :(得分:1)

更改

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

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