1

私は以下のような内部エンドポイント設定を持っています:

<InternalEndpoint name="TcpSvcEndpoint" protocol="tcp" port="20000" />

エンドポイントは、NetTcpWCFサービスによって使用されます。コンピューティングエミュレーターで1つのインスタンスを実行している場合、構成は正常に機能します。ただし、コンピューティングエミュレーター(Visual StudioがAzureプロジェクトをデバッグする)に2つ以上のインスタンスがある場合、すべてのインスタンスに同じポートが割り当てられます。もちろん、これはすべてのサービス(最初のインスタンスを除く)のWCF NetTcp初期化に失敗しますが、「IPエンドポイントには既にリスナーがあります。必ず..... SocketException:各ソケットを1回だけ使用してください...。 。 "。

私の理解では、エミュレーターはインスタンスごとにポートをインクリメントします。そうでない場合は、Visual Studioでデバッグしているときに、コンピューティングエミュレーターで複数のインスタンスをどのようにテストしますか?

「*」で動的ポート設定を使用したくありません。

明確にするために、割り当てられたポートを取得するためにRoleEnvironmentにアクセスしています。

RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["TcpSvcEndpoint"].IPEndpoint.Port;

AzureSDK1.6を使用しています。(2011年11月版)。

4

1 に答える 1

1

Windows Azure SDK 1.5 以降では、複数のインスタンスの IP アドレスは異なりますが、このブログで説明されているように、EndPoint 設定で定義されているポートは同じです。

2 つのインスタンスでポート 10000 の TCP エンドポイントを定義すると、次のようにインスタンス IP アドレスが取得されます。

  • インスタンス #1 - 127.255.0.1:10000
  • インスタンス #2 - 127.255.0.2:10000

そのため、コンピューティング エミュレーターでサービスのすべてのインスタンスをテストする必要がある場合。アプリケーションをテストするには、IPAddress と Port を組み合わせて取得する必要があります。

于 2012-06-07T05:29:24.677 に答える