1

いくつかのサービスをホストする複数の Web ロールを含む Windows Azure クラウド サービス プロジェクトがあります。相対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 に答える