需要在C#中提高ftp上传性能的建议

时间:2010-08-15 21:41:27

标签: c#-3.0 ftp

我正在编写使用ftp和远程服务器上传和下载大量文件的软件。下载速度很好,并保持在4mb / s以上。小上传是即时的。我遇到的问题是当我的程序上传一个大的40Mb zip文件时,我的性能非常差。它似乎以突发(100-200Kb / s)上传,然后延迟一秒并反复执行,直到文件最终完成上传。从同一服务器以编程方式下载文件需要30秒的时间,使用filezilla将相同的文件上载到同一服务器需要大约相同的时间。通过软件上传最多可能需要15分钟。有些事情显然是错误的。

我正在使用starksoft ftp库来处理上传/下载:http://starksoftftps.codeplex.com/

以下是有问题的代码示例:

    FtpClient ftp = new FtpClient(sourcecfg.Host);
        ftp.MaxUploadSpeed = 0;
        ftp.MaxDownloadSpeed = 0;
        ftp.FileTransferType = TransferType.Binary;
        ftp.DataTransferMode = TransferMode.Passive;
        ftp.Open(sourcecfg.FtpUserName, sourcecfg.FtpPassword); 
        ftp.PutFile(backupTempPath, targetcfg.getFullPath() + "wordpress-backup.zip",  FileAction.Create);                

我也尝试使用PutFile的重载版本,它接受Stream对象而不是路径字符串。结果没有改变。

偶然事项:我正在虚拟机实例中的winxp中编译visual c#express 2008。我已经尝试了调试和生产exe,但结果没有变化。

这些问题感觉就像缓冲或限制问题,但在查看ftp类的内部代码时,我没有看到任何异常,我特意将其设置为不加油。有关此特定ftp组件库的任何建议或意见?

1 个答案:

答案 0 :(得分:2)

了解使用FileZilla的连接是活动模式连接还是被动模式连接可能会很有趣。其他感兴趣的事情是尝试使用显示客户端和服务器之间对话的FTP客户端下载文件。我不确定FileZilla是否会向您显示此信息。