将WCF客户端终结点配置为使用相对地址(对于Azure)
本文关键字:相对地址 对于 Azure 客户端 WCF 结点 配置 | 更新日期: 2023-09-27 18:00:39
我有一个Windows Azure云服务项目,该项目包含多个Web角色以托管一些服务。我想在ServiceY中使用ServiceX(每个都运行在不同的角色上),使用relativeURL。
这就是我托管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与相对地址一起使用呢?这难道不可能,因为它们运行在同一个云服务上吗?
您可以通过编程方式使用相对地址,但您仍然需要知道基地址(或仅使用localhost:8080作为基)-除非您构建自定义配置或利用AppSettings
,否则无法通过web.config
使用相对地址。
// 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
以类似方式覆盖基地址。