【发布时间】:2016-03-14 14:48:45
【问题描述】:
我正在尝试连接我的应用程序以读取托管在我的 FTP 服务器中的文档,我正在使用 FileZilla,我的应用程序托管在 Azure 中。但似乎无法连接。我有一个公共 IP,在 localhost 我的应用程序运行良好,但是当它在线时它失败了。 这是我用来将应用程序连接到我的 FTP 服务器的代码。
public static void getExcelFromFTP(string destinationFile)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(@"ftp://100.100.100.0/folder/file.xlsx");
request.KeepAlive = true;
request.UseBinary = true;
request.Credentials = new NetworkCredential(@"username", "password");//FTP Server credentials
request.Method = WebRequestMethods.Ftp.DownloadFile;
Stream reader = request.GetResponse().GetResponseStream();
FileStream fileStream = new FileStream(destinationFile, FileMode.Create);
int bytesRead = 0;
byte[] buffer = new byte[2048];
while (true)
{
bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
fileStream.Write(buffer, 0, bytesRead);
}
fileStream.Close();
}
有人可以帮我解决这个问题吗? 提前致谢。
【问题讨论】:
-
谁托管 ftp 服务器?
-
我做到了,使用公共IP,我在我用作服务器的计算机上安装了一个fileZilla服务器。
-
你确定你和外界之间没有防火墙吗?例如没有windows防火墙,没有路由器充当防火墙?试试ftptest.net
-
我使用协议进行了测试:Explicit FTP over TLS,它向我展示了以下内容:确保您的服务器允许 FTP over TLS 并配置了有效的证书。一些状态防火墙过滤 AUTH 命令。如果是这种情况,请更换有故障的防火墙。
-
您可能需要在 Azure 管理门户中为 FTP 端口添加一个终结点。您需要允许端口 20 和 21 上的流量。如果应用在 Azure VM 上运行,则将其添加到 VM 设置中。
标签: c# azure web-applications ftp filezilla