当服务器在NAT

时间:2016-11-06 14:07:40

标签: c# asp.net .net wcf iis

我浪费了xx小时来寻找解决方案,但没有成功:(

我有IIS服务器在NAT 后面,安装了一个WCF服务主机(在IIS上)。 Localy和通过局域网通信客户端-WcfService工作属性,但当我尝试将服务引用(通过互联网)添加到我的wcf服务主机 - 在visual studio中,我有一个问题如下:

  

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

我已经在我的路由器端口WAN上重定向到我的WCF Sercice的端口Lan。它的工作属性,因为当我通过互联网连接到浏览器中的http://[...] .svc文件时,我可以看到正确的网站。 enter image description here

我的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>

任何想法如何解决我的问题?我会非常感谢任何提示。

感谢。 抱歉我的英文:)

1 个答案:

答案 0 :(得分:1)

我解决了这个问题。

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

第二个问题是:在svc / wsdl我有本地网址(这就是为什么我在尝试从互联网连接时遇到HTTP 400错误)

解决:

第一。所以我已经将WAN_port:Y转发到LAN_port:Y(相同的端口)

第二。我在IIS站点中添加了 - 绑定主机名为WAN_domain_name。

致记:https://gavinmckay.wordpress.com/2009/03/24/howto-fix-wcf-host-name-on-iis