WebClient和FtpWebRequest都挂(超时)

时间:2013-02-04 17:29:51

标签: c# webclient ftpwebrequest

我正在尝试从使用被动模式的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库并遇到了同样的问题。

看起来他们的结果正在关闭我的联系。

1 个答案:

答案 0 :(得分:0)

我遇到过类似的问题。在我的情况下,我需要从Linux服务器上的许多文件夹下载许多小文件。 Sys-admin bloke建议我在每批之间加入3秒钟。它大大减少了错误的数量。