背景
我们在使用 basicHttpBinding 运行的 Windows服务中托管 WCF网络服务。
问题
浏览本地计算机上的服务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>
有人有什么想法吗?
答案 0 :(得分: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
。