Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF REST服务(自托管)只能在本地网络中访问(并且必须远程访问)_C#_Wcf_Wcf Rest_Self Hosting - Fatal编程技术网

C# WCF REST服务(自托管)只能在本地网络中访问(并且必须远程访问)

C# WCF REST服务(自托管)只能在本地网络中访问(并且必须远程访问),c#,wcf,wcf-rest,self-hosting,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窗体中运行)

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

static Uri baseAddress = new Uri("http://m.y.i.p:8080");
WebServiceHost serviceHost = new WebServiceHost(typeof(WebService.RestService),
    baseAddress);
serviceHost.Open();
(顺便说一句,它在Windows窗体中运行)

下面是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,一切都应该正常。如果您有此问题,请仔细检查您的代码,确保您的网络按您预期的方式工作,如果需要,请关闭防火墙,如果您不是管理员,请使用所需端口的答案或拥有所需端口。

更改

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


这听起来更像是DNSI的问题,我猜这不是DNS,因为在这些测试之前,我使用了Apache的同一个端口,它工作正常(当然我现在没有使用Apache)。没有足够的信息来帮助。。。检查事件日志…这就是问题所在。。。事件日志中没有显示任何内容,比如没有建立连接。事实上,这是路由器上的问题+感谢你让我调查此事。。。很抱歉…+1,因为这将帮助我,现在我知道我不需要在每台电脑上设置IP,我将使用我的程序。
new Uri("http://0.0.0.0:8080");