在不更改站点绑定的情况下更改WCF Web服务的公开端点URL

Jus*_*tin 3 configuration wcf iis-7 web-services

我在IIS7中托管了一个WCF Web服务,它在其WSDL中将端点URL报告为以下内容

http://machinename/virtualdirectory/service.svc
Run Code Online (Sandbox Code Playgroud)

但是,客户端需要使用的实际公共URL实际上是

http://machinename.mydomain.com/virtualdirectory/service.svc
Run Code Online (Sandbox Code Playgroud)

因此,目前尝试使用此Web服务的客户端会失败,除非他们手动编辑端点URL.

我知道我可以通过在HOWTO中更改IIS中的站点绑定来解决这个问题:在IIS上修复WCF主机名但是在这种情况下,该站点与另一个应用程序共享,如果我这样做就停止工作,所以这不是一个选项.

是否有另一种方法可以更改WCF用于此虚拟目录的端点URL?

Jus*_*tin 7

虽然没有直接回答我的问题(我如何在web.config文件中设置WSDL端点URL)将<useRequestHeadersForMetadataAddress />元素添加到<serviceBehaviors>我的web.config文件的部分确实解决了我的问题,因为现在端点URL基于用于的URL访问WSDL,它始终与用于调用Web服务的URL相同.

请注意,在这个SO问题中,它表明我需要提供端口号,请注意,这对我来说不是必需的 - 只需添加<useRequestHeadersForMetadataAddress />元素即可

<serviceBehaviors>
   <behavior name="<name>">
     <!-- Other options would go here -->
     <useRequestHeadersForMetadataAddress />
   </behavior>
</serviceBehaviors>
Run Code Online (Sandbox Code Playgroud)