【问题标题】:How to use IIS WCF Host Service over internet when server is behind NAT当服务器位于 NAT 之后时,如何通过 Internet 使用 IIS WCF 主机服务
【发布时间】:2016-11-06 14:07:39
【问题描述】:

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

我有 IIS 服务器在 NAT 之后,安装了 WCF 服务主机(在 IIS 上)。 本地和局域网通信客户端-WcfService 工作属性,但是当我尝试将服务引用(通过 Internet)添加到我的 wcf 服务主机时 - 在 Visual Studio 中,我遇到以下问题:

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

我已将路由器端口 WAN 重定向到 WCF Sercice 的端口 Lan。它的工作属性,因为当我通过互联网连接到浏览器中的http://[...] .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>

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

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

【问题讨论】:

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


    【解决方案1】:

    我解决了这个问题。

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

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

    已解决:

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

    第二。我在 IIS Site - Binding hostname as WAN_domain_name 中添加。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      相关资源
      最近更新 更多