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