我正在尝试从使用被动模式的 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 项上,但是如果我让工作进程在后台运行,然后几分钟后回来并关闭 IIS express 或 VS Web 服务器,文件将显示。但是,它太不可预测了,不能按原样在生产中使用。
我还尝试了 CodePlex 上的 FTP LIB 库并遇到了同样的问题。
他们那边似乎有什么东西正在关闭我的连接。