2

Filezilla のような FTP クライアントを介してワーカー ロールに接続し、azure BLOB ストレージにアクセスできるように、ポート 21 に入力エンドポイントを持つ Azure ワーカー ロールをデプロイして、着信 FTP 接続を受け入れることができるようにする必要があります。

このため、LIST、RETR、STOR、PORT、USER、PASS などの FTP コマンドを実装することができました。これらはすべて、FTP のアクティブ モードで正常に動作します。

しかし、FTP のパッシブ モードに切り替えると (Azure Worker ロールに対して PASV コマンドを実行する)、問題が見つかります。私は Azure の初心者なので、問題を追跡することはできません.ワーカー ロールはロード バランサーを超えているため、パッシブ モードには構成が必要です。FTP 用の Web ロールの手動構成について説明しているブログはほとんど見ませんでした。ロールがどの VM マシンにデプロイされるかがわからないため、構成をどのように処理できますか

私が試した方法:

1.Azure ワーカー ロールで、次のエンド ポイントを設定します。

FTP 入力 TCP 21

Endpoint1 入力 tcp 1025

最初はStart()で、このコードをオンラインにしました

TcpListener サーバー = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["FTP"].IPEndpoint);

そしてPASVモードでは、次のことがありました

TcpListener サーバー = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint); 新しいポート1025で開き、クライアントに送り返すようにします。クライアントに送り返すと、次のような例外が発生しました:

SocketErrorCode は 10053 であり、SocketErrorDesc:System.Net.Sockets.SocketError.ConnectionAborthed です。

トランスポート接続にデータを書き込めません: 確立された接続が、ホスト マシンのソフトウェアによって中止されました。

2. http://checkip.dyndns.org/を使用して外部 IP アドレスを取得する別の方法。ここから IP アドレスを取得する場合、RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[" Endpoint1"].IPEndpoint を使用してコードからポートを取得する必要がありますか? ???

本当に私は Azure のものと FTP の構成で本当に混乱しています。

次の記事を読みましたが、パッシブ モードで動作するようにプログラムでワーカー ロールを構成する方法 (ポート範囲の設定、コードからの取得) を見つけることができませんでした。

http://www.itq.nl/blogs/post/Walkthrough-Hosting-FTP-on-IIS-75-in-Windows-Azure-VM.aspx http://angelolaris.blogspot.com/

よろしく、 Vivek

4

1 に答える 1

0

最初に確認できると思うのは、リスナーも以下のように開始しているか、今すぐ開始しているかどうかです。

TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();

次に、ワーカー ロールに上記のコードがあると、ポートは着信要求の受信を開始し、IP/ポートにバインドされているアプリケーションはパケットを受信します。

ワーカー ロールで機能させる方法を本当に理解したい場合は、このガイダンスに従って最初に Web ロールをセットアップしてから、ワーカー ロールで同じ構成を複製してみてください。少し複雑ですが、最初に物事がどのように機能するかを理解する必要があり、それからそれ自体を実装できるようになります.

また、Worker Role から Azure Blob ストレージ (データが Azure Blob ストレージにある場合) に直接接続してコンテンツにアクセスできるため、なぜそのような構成が必要なのかわからないため、要件が明確ではありません。複雑にするローカル接続。アプリケーション アーキテクチャを再検討する場合、そのような作業を行う必要はないかもしれません。

于 2012-08-30T17:30:43.157 に答える