我正在尝试从使用被动模式的FTP站点下载文件。我已经尝试了FtpWebRequest方法和WebClient.DownloadFile和DownloadFileAsync方法。
最近,我的代码如下:
using (var client = new WebClient())
{
client.Proxy = new WebProxy();
client.Credentials = credentials;
client.DownloadFileCompleted += client_DownloadFileCompleted;
client.DownloadFileAsync(new Uri(remotePath), localPath);
}
并包含在方法DownloadFile中。在异步处理程序中,我得到下一个项目并且(递归地)再次调用DownloadFile方法,依此类推,直到我到达最后一个项目。
几乎每一次,我使用的每个方法,我都会通过6个文件和第7个错误。只有一次它通过列表中的所有文件,我无法再次复制它。文件数量约为100,文件大小约为30-120k。奇怪的是,通常我会看到我的本地文件夹中的文件计数挂在第7项上,但是如果我让Worker Process在后台运行然后几分钟后再回来并关闭IIS Express或VS Web Server,文件将显示出来。但这太难以预测了,不能按原样用于制作。
我还在CodePlex上尝试了FTP LIB库并遇到了同样的问题。
看起来他们的结果正在关闭我的联系。
答案 0 :(得分:0)
我遇到过类似的问题。在我的情况下,我需要从Linux服务器上的许多文件夹下载许多小文件。 Sys-admin bloke建议我在每批之间加入3秒钟。它大大减少了错误的数量。