C# 当服务器位于NAT之后时,如何通过internet使用IIS WCF主机服务

C# 当服务器位于NAT之后时,如何通过internet使用IIS WCF主机服务,c#,asp.net,.net,wcf,iis,C#,Asp.net,.net,Wcf,Iis,我花了xx个小时寻找解决方案,但没有成功:( 我在NAT后面安装了IIS服务器,安装了WCF服务主机(在IIS上)。 Localy和over LAN Communication client WcfService working属性,但当我尝试将服务引用(通过internet)添加到我的wcf服务主机-在visual studio中,我遇到如下问题: 请求失败,HTTP状态为400:请求错误。 元数据包含无法解析的引用: 我已经在我的路由器端口WAN上重定向到我的WCF服务的端口Lan。它的工作

我花了xx个小时寻找解决方案,但没有成功:(

我在NAT后面安装了IIS服务器,安装了WCF服务主机(在IIS上)。 Localy和over LAN Communication client WcfService working属性,但当我尝试将服务引用(通过internet)添加到我的wcf服务主机-在visual studio中,我遇到如下问题:

请求失败,HTTP状态为400:请求错误。 元数据包含无法解析的引用:

我已经在我的路由器端口WAN上重定向到我的WCF服务的端口Lan。它的工作属性是因为当我通过internet连接到浏览器中的.svc文件时,我可以看到正确的站点。

我的web.config

<system.serviceModel>
    <behaviors>
  <serviceBehaviors>
    <behavior name="mexBehavior">
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service behaviorConfiguration="mexBehavior" name="KSPDJOBService.KSPDJOBService">
    <endpoint address="" binding="wsHttpBinding" contract="KSPDJOBService.IKSPDJOBService" />

    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost/KSPDJOBService" />
       </baseAddresses>
    </host>
  </service>
</services>

有什么办法解决我的问题吗?我非常感谢你给我的建议

谢谢。
对不起,我的英语:)

我解决了这个问题

第一个问题是:端口内转发路由器已将WAN端口X转发到本地端口Y

第二个问题是:在svc/wsdl中,我有本地url(这就是为什么我在尝试从internet连接时出现HTTP 400错误)

已解决:

第一。因此,我将WAN\u端口:Y转发到LAN\u端口:Y(相同的端口)

第二。我添加了IIS站点绑定主机名作为WAN\u域名

归功于: