WebClient和FtpWebRequest都挂起(超时)

本文关键字:超时 挂起 FtpWebRequest WebClient | 更新日期: 2023-09-27 17:57:26

我正试图从使用被动模式的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进程在后台运行,几分钟后回来并关闭IIS express或VS Web服务器,文件就会显示出来。然而,它太不可预测了,不能按原样在生产中使用

我还在CodePlex上尝试了FTP LIB库,但也遇到了同样的问题。

他们这一端似乎有什么东西正在关闭我的联系。

WebClient和FtpWebRequest都挂起(超时)

我也遇到过类似的问题。在我的情况下,我需要从Linux服务器上的许多文件夹中下载许多小文件。系统管理员建议我在每批之间延迟3秒。它大大减少了错误的数量。