【发布时间】:2012-08-24 20:17:21
【问题描述】:
我需要在端口 21 上部署一个带有输入端点的 Azure Worker 角色,以便它可以接受传入的 FTP 连接。这样我应该能够通过 Filezilla 等 FTP 客户端连接到 Worker 角色并访问 azure blob 存储。
为此,我能够实现 LIST、RETR、STOR、PORT、USER 和 PASS 等 FTP 命令。所有这些都适用于 FTP 的主动模式。
但是当我切换到 FTP 的 PASSIVE 模式(对 Azure Worker Role 执行 PASV 命令)时,我发现了问题。因为我是 Azure 的新手,所以无法追踪问题。通过几个博客才知道由于 Azure Worker 角色超出了负载均衡器,因此被动模式需要配置。我看到很少有博客讨论手动配置 FTP 的 Web 角色。还有更多,因为我们不确定该角色将部署哪台 vm 机器..我该如何处理配置
我尝试过的方法:
1.在Azure Worker角色中,我设置了以下端点
FTP 输入 tcp 21
Endpoint1 输入 tcp 1025
最初在 Start() 上,我有这段代码
TcpListener server = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["FTP"].IPEndpoint);
在 PASV 模式下,我有关注
TcpListener server = SocketHelpers.CreateTcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint); 以便它在新端口 1025 上打开并发送回客户端。在发送回客户端时,我得到了如下异常:
SocketErrorCode 为 10053 且 SocketErrorDesc:System.Net.Sockets.SocketError.ConnectionAborthed
无法将数据写入传输连接:已建立的连接被主机中的软件中止。
2.通过使用http://checkip.dyndns.org/,if获取外部IP地址的其他方式我从中获取IPadress,我是否需要从代码中获取端口使用 RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["Endpoint1"].IPEndpoint???
我真的对 Azure 的东西和 FTP 配置感到困惑。
我浏览了以下文章,但找不到如何以编程方式配置工作角色(设置端口范围,从代码中检索)以在 PASSIVE 模式下工作。
http://www.itq.nl/blogs/post/Walkthrough-Hosting-FTP-on-IIS-75-in-Windows-Azure-VM.aspx http://angelolaris.blogspot.com/
问候, 维韦克
【问题讨论】:
标签: sockets azure ftp ip passive-mode