3

InstanceInput エンドポイントを使用するためのサンプル コードを投稿してもらえますか? サンプルの WCF サービスがポート 8080 でリッスンする worker ロールで、以下の構成を使用しました。

<Endpoints>
  <InstanceInputEndpoint name="InstanceAccess" protocol="tcp" localPort="8080">
    <AllocatePublicPortFrom>
      <FixedPortRange max="10105" min="10101" />
    </AllocatePublicPortFrom>
  </InstanceInputEndpoint>
</Endpoints>

しかし、ポート 10101 から 10105 のいずれかを使用して、外部のコンシューマーからこの WCF サービスにアクセスできませんでした。指定された範囲のパブリック ポートと共に Azure サービスのパブリック DNS 名を使用する必要がありますか?

また、worker ロールの OnStart() メソッド内からこのエンドポイントの詳細にアクセスできませんでした。RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["InstanceAccess"] を使用しました。ただし、RoleInstanceEndpoint は返されません。ここで何か不足していますか?

4

2 に答える 2

0

これは、Azure InstanceInputエンドポイントを使用し、ワーカーロールでWCFサービスをホストするVisualStudioソリューションのサンプルです個々のインスタンスのそれぞれで実行されているWCFサービスには、AzureDNS名とそのインスタンスにマップされたパブリックポートを使用してアクセスできます。次のエンドポイント構成を使用しました。

  <Endpoints>
      <InstanceInputEndpoint name="Endpoint1" protocol="tcp" localPort="10100">
        <AllocatePublicPortFrom>
          <FixedPortRange max="10110" min="10106" />
        </AllocatePublicPortFrom>
      </InstanceInputEndpoint>
    </Endpoints>

このエンドポイントは、WorkerRole(OnStart()メソッドとRun()メソッドの両方)内からアクセスできませんでした。そこで、「localhost」を使用しました。

  string endpointIP = "localhost:10100";

  if (RoleEnvironment.CurrentRoleInstance.InstanceEndpoints.Keys.Contains("Endpoint1"))
  {
      IPEndPoint externalEndPoint = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint;
      endpointIP = externalEndPoint.ToString();
  }

このソリューションには、ホストされたDNS名を使用してこれらの個々のWCFサービスを呼び出すコンソールクライアントも含まれています。

于 2012-06-27T11:26:20.467 に答える
0

InstanceInput エンドポイントはローカルでは機能していませんが、デプロイされると正常に機能し、インスタンスの作成が許可されているポート範囲に基づいてインスタンスごとに異なるポートが割り当てられるため、構成で指定されたポート範囲を超えてインスタンスを作成することはできません。たとえば、ポート範囲が 101 ~ 105 の場合、作成できるインスタンスは 5 つだけです

于 2019-12-04T08:04:41.730 に答える