背景
我们有一个WCF 网络服务主办于视窗服务与运行基本Http绑定.
PROBLEM
浏览到本地计算机上的服务 URL 工作正常,但尝试使用外部 IP 地址(远程或本地)进行浏览则不起作用。例子:
http://localhost:8000/booking.svc
(OK)
http://<external-IP>:8000/booking.svc
(不好)
应用程序配置
<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>
有人有主意吗?
尝试使用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
反而。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)