我有一个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?这是不可能的,因为它们运行在同一个云服务上?
答案 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
覆盖基址以获得类似的方法。