1

我有一个 Windows Azure 云服务项目,其中包含多个 Web 角色来托管一些服务。我想使用相对URL在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?这不可能,因为它们运行在同一个云服务上吗?

4

1 回答 1

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

于 2013-02-22T15:22:30.353 回答