0

ローカル環境で目的の Azure デプロイをエミュレーターで実行するのに問題があります。

(MyWebSite)public (InputEndpoint) を持つ1つの WebRole と、 InternalEndpoint を持つ 1 つの WebRole があり(MyServiceApplication)ます。InternalSite には、PublicSite に公開する一連の WCF サービスがあります。

すなわち

  <WebRole name="MyServiceApplication"  vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="MyInternalEndpoint" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InternalEndpoint name="MyInternalEndpoint" port="8083" protocol="http"></InternalEndpoint>
    </Endpoints>
  </WebRole>
  <WebRole name="MyWebSite" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
  </WebRole>

MyWebSite から MyServiceApplication エンドポイントにプログラムで接続します。すなわち。

var applicationRole = RoleEnvironment.Roles["MyServiceApplication"].Instances.First().InstanceEndpoints["MyInternalEndpoint"].IPEndpoint;
var endPointAddress = string.Format("http://{0}:{1}/MyService.svc", applicationRole.Address, applicationRole.Port);
var channel = channelFactory.CreateChannel(new EndpointAddress(endPointAddress));

変数はAzure Emulator Express での実行時でendPointAddressあることが判明しましたが、次のように不平を言っています。http://127.0.0.1:8083/MyService.svc

http://127.0.0.1:8083/MyService.svcメッセージを受け入れることができるリッスンしているエンドポイントがありませんでした。

ただし、経由http://localhost:8083/MyService.svcでこのエンドポイントを参照すると、問題はありません。

したがって、問題は、InternalEndpoint を127.0.0.1Azure Emulator Express で (localhost ではなく) にバインドする方法、またはプログラムでエンドポイントを に解決する方法があるかということだと思いますhttp://localhost:8083/MyService.svc

誰かが助けてくれることを願って、

4

1 に答える 1

1

興味のある方のために説明すると、管理者権限で Visual Studio を実行すると、両方のロールが (localhost ではなく) 127.0.0.1 にバインドされます。

なぜそうなのかは完全にはわかりませんが、私にとってはうまくいきました。

于 2014-07-21T09:57:38.127 に答える