【问题标题】:Passive FTP on Azure Worker Role through socket programmingAzure Worker Role 上的被动 FTP 通过套接字编程
【发布时间】: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


    【解决方案1】:

    首先我想我可以确认的是,不知道你是否也开始如下或现在的监听器:

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

    接下来,当您的工作角色具有上述代码时,端口开始接收传入请求,并且任何绑定到 IP/端口的应用程序都将接收数据包。

    如果您真的想了解如何让它在您的 Worker 角色中工作,您可以做的是,首先following this guidance to setup in a Web Role,然后尝试在您的 Worker 角色中复制相同的配置。做起来并不复杂,但首先您需要了解事情是如何工作的,然后您才能自行实现。

    您的要求也不清楚,因为我不确定您为什么需要这样的配置,因为您可以从工作角色直接连接到 Azure Blob 存储(如果您的数据位于 Azure Blob 存储中)并访问内容,为什么具有 FTP/本地连接使其变得复杂。如果你重新审视你的应用架构,你可能不需要做这样的工作。

    【讨论】:

    • 感谢您的回答。我将浏览您提供的链接并回复您。我唯一担心的是,由于我们没有 IIS 作为辅助角色,我该如何处理中提到的配置上面的链接。无论如何让我通过一次。再次感谢。
    • 对于学习过程,您可以使用 webrole(webrole 只是带有 IIS 的辅助角色)并使用学习在不带 IIS 的辅助角色中实现相同的功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2017-09-06
    • 2015-04-15
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多