2013-02-22 47 views
1

我有一个Windows Azure云服务项目,其中包含多个Web角色以承载一些服务。我想使用ServiceX in ServiceY(每个在上运行,不同角色)使用相对 URL。配置WCF客户端端点以使用相对地址(适用于Azure)

,这是我主持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 ServiceY与相对地址?这不可能,因为他们在同一个云服务上运行?

回答

1

你可以以编程方式使用相对地址,但你仍然需要知道的基地址(或只使用localhost:8080为基础) - 这是不可能通过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客户端点地址,并覆盖使用UriBuilder类似手段的基址。