WCF在负载均衡器后面的wsdl中提供了不正确的URL

时间:2015-05-07 07:06:24

标签: wcf

我在负载均衡器后面的Web服务器群集上安装了wcf。

pubblic地址是:http://externaldomain/mywcf.svc,它是用户应该访问的唯一端点。

所以,当我在浏览器中粘贴这个url以查看“帮助页面”(显示其“wsdl”文件的URL的页面) 地址不是我所期望的:“http://externaldomain/mywcf.svc?wsdl”但是“http://server1/mywcf.svc?wsdl”(server1是运行wcf的服务器的名称,用户已经被负载均衡器路由)< / p>

这使得无法将服务添加到visualstudio,因为建议的地址“http://server1/mywcf.svc=wsdl”是私人网址

那么,我应该如何配置wcf设置以使“aspnet”通过“正确”地址生成帮助页面? 是否有一些“代理”节点或类似于web.config

中设置的节点
  #### public url ####           #### private url ####

                                (http://server1)
                                 ----------------
                            -->  -- webserver1 --
                           /     ----------------
                          /
 (http://externaldomain) /
 ---------------------- /
 --- load balancer ---- 
 ---------------------- \
                         \
                          \
                           \     (http://server2)
                            -->  ----------------
                                 -- webserver2 --
                                 ----------------

1 个答案:

答案 0 :(得分:3)

对于像useRequestHeadersForMetadataAddress这样的案例,WCF有特殊行为。

<serviceBehaviors>

  <behavior>

    <useRequestHeadersForMetadataAddress/>

  </behavior>

</serviceBehaviors>

此行为使服务使用请求中使用的url替换url,因此它避免了您提到的问题。更多信息:http://zamd.net/wcf/2010/01/14/using-request-headers-for-metadata-address.html

相关问题