0

ワーカーまたは Web ロールの代わりに Azure VM で実行する必要があるサーバー アプリケーション (TCP ポートでリッスンする .NET コンソール アプリケーション) があり、そのアプリが独自のパブリック/インターネットを決定できるようにする必要があります。エンドポイントの IP とポート (たとえば、VM が管理ポータルを通じて作成されたときに作成/割り当てられたもの)。アプリがリッスンする内部 TCP ポートはすべての VM で同じですが、外部/インターネット ポートは明らかに VM インスタンスごとに一意になります (私は Azure ロード バランサーを使用していません)。

.NET コンソール アプリケーションを変更して、 を使用してホスト仮想マシンの公開 IP アドレスとポートを特定しようとしましたが、例外 (「ロール検出データが利用できません」)RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[i].IPEndpointがスローされ、常に. ドキュメントには、これが可能であると書かれています:RoleEnvironment.CurrentRoleInstanceRoleEnvironment.IsAvailablefalse

RoleEnvironment クラスは、Azure ロールの外部にある Azure VM のスタンドアロン コンポーネントで使用できます。これらのコンポーネントは、たとえば、ロール インスタンスにリモートで移動し、コマンド ラインからコンポーネントを起動することによって実行できるプログラムにすることができます。RoleEnvironment クラスにアクセスするには、これらのプロセスを昇格した権限で実行する必要があります。

VM に対してリモート デスクトップを使用してコンソール アプリケーションを実行し、.exe を右クリックして [管理者として実行] を選択していますが、RoleEnvironment.IsAvailableまだfalse. Windows Azure 統合コンポーネントを何らかの方法で VM にインストールする必要がありますか? Azure でホストされる Hyper-V VM を準備するときに、Hyper-V でそれを実行することについて、オンラインのすべてのリンクで説明されています。ただし、この場合は、管理ポータルを使用して既定の Windows Server 2012 R2 データセンター イメージを選択することにより、最初から Azure で直接 VM を作成しています。この場合のインストール方法や、まだサポートされているかどうかはわかりません (Windows Azure 統合コンポーネントに関するリンクのほとんどは 2011 年のものです)。

最終的な問題は、Azure VM で実行されているスタンドアロン アプリケーションが、その VM のパブリック エンドポイントをどのように判断できるかということです。

4

1 に答える 1