我有一个托管在 IIS7 中的 WCF Web 服务,它在其 WSDL 中报告其端点 URL,如下所示
http://machinename/virtualdirectory/service.svc
但是客户端需要使用的实际公共(public)URL实际上是
http://machinename.mydomain.com/virtualdirectory/service.svc
因此,目前尝试使用此 Web 服务的客户端会失败,除非他们手动编辑端点 URL。
我知道我可以通过根据 HOWTO: Fix WCF Host Name on IIS 在 IIS 中更改站点的绑定(bind)来解决此问题。但是在这种情况下,该站点与另一个应用程序共享,如果我这样做,该应用程序将停止工作,因此这不是选项。
是否有另一种方法可以更改 WCF 用于此虚拟目录的端点 URL?
最佳答案
虽然没有直接回答我的问题(如何在 web.config 文件中设置 WSDL 端点 URL)添加 <useRequestHeadersForMetadataAddress />
<serviceBehaviors>
的元素我的 web.config 文件的部分确实解决了我的问题,因为现在端点 URL 基于用于访问 WSDL 的 URL,它始终与用于调用 Web 服务的 URL 相同。
请注意,在 this SO question它表明我需要提供端口号,请注意这对我来说不是必需的 - 只需添加 <useRequestHeadersForMetadataAddress />
元素就够了
<serviceBehaviors>
<behavior name="<name>">
<!-- Other options would go here -->
<useRequestHeadersForMetadataAddress />
</behavior>
</serviceBehaviors>
关于wcf - 在不更改站点绑定(bind)的情况下更改 WCF Web 服务的公开端点 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668798/