ローカル環境で目的の 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.1
Azure Emulator Express で (localhost ではなく) にバインドする方法、またはプログラムでエンドポイントを に解決する方法があるかということだと思いますhttp://localhost:8083/MyService.svc
。
誰かが助けてくれることを願って、