配置WCF客户端端点以使用相对地址(对于Azure)

时间:2013-02-22 14:39:47

标签: c# wcf azure wcf-binding basichttpbinding

我有一个Windows Azure云服务项目,其中包含多个Web角色来托管某些服务。我想使用相对网址,在 ServiceY 中使用 ServiceX (每个都在不同角色上运行)。

这就是我托管ServiceX的方式:

<service name="ServiceX">
    <endpoint address="" binding="basicHttpBinding" contract="ServiceX" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>

现在我想在ServiceY中使用该服务。使用绝对URL,它可以正常工作:

<system.serviceModel>
    <client>
      <endpoint name="ServiceXProxy"
          address="http://mycloudservice.cloudapp.net:8080/ServiceX.svc"
          binding="basicHttpBinding"
          contract="ServiceX"/>
...

但是如何在ServiceY中使用具有相对地址的ServiceX?这是不可能的,因为它们运行在同一个云服务上?

1 个答案:

答案 0 :(得分:1)

您可以通过编程方式使用相对地址,但仍需要知道基址(或仅使用localhost:8080作为基础) - 无法通过{{1}使用相对地址除非您构建自定义配置或利用web.config

AppSettings

您还可以从// create bindings & endpoints var baseAddress = System.ConfigurationManager.AppSettings["baseAddress"]; var binding = new System.ServiceModel.BasicHttpBinding(); var endpoint = new EndpointAddress(baseAddress + "/ServiceX.svc"); 加载客户端端点地址,并使用web.config覆盖基址以获得类似的方法。