无法远程访问WCF服务

问题描述 投票:3回答:1

背景

我们在运行basicHttpBinding的Windows服务中托管了WCF Web服务。

问题

浏览本地计算机上的服务URL工作正常,但尝试使用外部IP地址(远程或本地EVEN)浏览不起作用。例:

http://localhost:8000/booking.svc(好的)

http://<external-IP>:8000/booking.svc(不行)

的app.config

<system.serviceModel>

    <services>
      <service behaviorConfiguration="DefaultServiceBehavior" name="HotelManagementSystem.ServiceHost.BookingService">
        <endpoint address="" binding="basicHttpBinding" contract="HotelManagementSystem.ServiceHost.IBookingService" />
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/booking.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>

    <behaviors>
      <serviceBehaviors>
        <behavior name="DefaultServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="True" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

  </system.serviceModel>

有人有主意吗?

wcf web-services
1个回答
4
投票

尝试使用useRequestHeadersForMetadataAddress

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior>
        <useRequestHeadersForMetadataAddress />
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

这将允许服务将用于访问服务的URI插入元数据中,以便wsdl对齐。有时你会去访问http://1.2.3.4/service.svc,但元数据将引用http://localhost。在本地,这很好,但远程,使得无法获取端点信息。相反,现在所有那些localhost引用将使用1.2.3.4而不是。

© www.soinside.com 2019 - 2024. All rights reserved.