Sockets 通过套接字编程在Azure Worker角色上使用被动FTP
我需要在端口21上部署一个具有输入端点的Azure Worker角色,以便它可以接受传入的FTP连接。这样,我应该能够通过FTP客户端(如Filezilla)连接到Worker角色,并访问Azure blob存储 为此,我能够实现FTP命令,如LIST、RETR、STOR、PORT、USER和PASS。所有这些都可以在FTP的活动模式下正常工作 但当我切换到FTP的被动模式(对Azure Worker角色执行PASV命令)时,我发现了这个问题。因为我是Azure的新手,所以无法跟踪问题。通过查看一些博客,我了解到,由于Azure Worker角色超出了负载平衡器的范围,因此被动模式需要配置。我看到了一些关于FTP的Web角色手动配置的博客。因为我正在处理Worker角色,由于我们不确定角色将部署哪台vm机器,配置是否会更改,以及如何在代码和其他方面进行处理..我如何处理配置 我尝试的方式: 1.在Azure Worker角色中,我设置了以下端点 FTP输入tcp 21 端点1输入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,SocketerRorDescr:System.Net.Sockets.SocketError.Connection无效 无法将数据写入传输连接:主机中的软件中止了已建立的连接 2.通过使用获取外部IP地址的另一种方式,我从中获取IPadress,是否需要使用从代码中获取端口 RoleEnvironment.CurrentRoleInstance.InstanceEndpoints[“Endpoint1”]。IPEndpoint 我真的很困惑Azure的东西和FTP配置 我阅读了以下文章,但找不到如何以编程方式配置worker角色(设置端口范围,从代码中检索)以在被动模式下工作 http://angelolaris.blogspot.com/ 问候,,Sockets 通过套接字编程在Azure Worker角色上使用被动FTP,sockets,azure,ftp,ip,passive-mode,Sockets,Azure,Ftp,Ip,Passive Mode,我需要在端口21上部署一个具有输入端点的Azure Worker角色,以便它可以接受传入的FTP连接。这样,我应该能够通过FTP客户端(如Filezilla)连接到Worker角色,并访问Azure blob存储 为此,我能够实现FTP命令,如LIST、RETR、STOR、PORT、USER和PASS。所有这些都可以在FTP的活动模式下正常工作 但当我切换到FTP的被动模式(对Azure Worker角色执行PASV命令)时,我发现了这个问题。因为我是Azure的新手,所以无法跟踪问题。通过查看
Vivek首先,我想我可以确认的是,我不确定你是按照以下方式还是现在开始收听:
TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();
接下来,当您的工作者角色中有上述代码时,端口开始接收传入请求,任何绑定到IP/端口的应用程序都将接收数据包
如果您真的想了解如何让它在您的工作者角色中工作,您可以做的是,首先,然后尝试在您的工作者角色中复制相同的配置。这并不复杂,但首先您需要了解事物是如何工作的,然后才能实现它本身
另外,您的要求也不清楚,因为我不确定您为什么需要这样的配置,因为您可以从工作角色直接连接到Azure Blob存储(如果您的数据位于Azure Blob存储)并访问内容,为什么要使用FTP/本地连接使其变得复杂。可能是,如果您重新访问应用程序体系结构,您不需要做这样的工作。首先,我想我可以确认的是,我不确定您是否也按照以下方式或现在启动侦听器:
TcpListener myPortListener = new TcpListener(RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["MY_PORT"].IPEndpoint);
myPortListener.Start();
接下来,当您的工作者角色中有上述代码时,端口开始接收传入请求,任何绑定到IP/端口的应用程序都将接收数据包
如果您真的想了解如何让它在您的工作者角色中工作,您可以做的是,首先,然后尝试在您的工作者角色中复制相同的配置。这并不复杂,但首先您需要了解事物是如何工作的,然后才能实现它本身
另外,您的要求也不清楚,因为我不确定您为什么需要这样的配置,因为您可以从工作角色直接连接到Azure Blob存储(如果您的数据位于Azure Blob存储)并访问内容,为什么要使用FTP/本地连接使其变得复杂。如果您重新访问您的应用程序体系结构,则可能不需要执行此类工作。谢谢您的回答。我将浏览您提供的链接并与您联系。我唯一关心的是,我们没有IIS作为工作人员,我如何处理上面链接中提到的配置。无论如何,让我再看一次。再次感谢。对于学习过程,您可以使用webrole(webrole只是IIS中的工作者角色)并使用学习在没有IIS的工作者角色中实现同样的事情。感谢您的回答。我将通过您提供的链接返回给您。我唯一关心的是,我们没有IIS在工作者角色中,我如何处理上面链接中提到的配置。无论如何,让我再看一次。再次感谢。对于学习过程,您可以使用webrole(webrole只是具有IIS的工作者角色),并使用学习在不具有IIS的工作者角色中实现相同的内容。