我需要在端口 21 上部署一个带有输入端点的 Azure Worker 角色,以便它可以接受传入的 FTP 连接。这样我就应该能够通过 Filezilla 等 FTP 客户端连接到 Worker 角色并访问 azure blob 存储。
为此,我能够实现 FTP 命令,如 LIST、RETR、STOR、PORT、USER 和 PASS。所有这些都适用于 FTP 的活动模式。
但是当我切换到 FTP 的 PASSIVE 模式(对 Azure Worker Role 执行 PASV 命令)时,我发现了问题。因为我是 Azure 的新手,所以无法追踪问题。通过几个博客知道,因为 Azure Worker 角色超出了负载均衡器,因此 PASSIVE 模式需要配置。我看到很少有博客讨论手动配置 FTP 的 Web 角色。因为我正在处理 Worker 角色,配置是否更改以及如何在代码中处理它等等因为我们不确定该角色将部署哪台 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/获取外部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/
问候, 维维克