Я пишу программное обеспечение, которое загружает и скачивает несколько файлов с использованием ftp с удаленного сервера.Скорости загрузки в порядке и остаются неизменными на уровне выше 4 Мбит / с.Небольшие загрузки происходят мгновенно.Проблема, с которой я сталкиваюсь, - когда моя программа загружает большой 40-мегабайтный zip-файл, у меня очень низкая производительность.Кажется, что он загружается пакетами (100-200 Кбит / с), затем задерживается на секунду и делает это несколько раз, пока файл не завершит загрузку.Программная загрузка файла с одного и того же сервера занимает 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 вместо строки пути.Результаты не изменились.
Происшествия: я компилирую в Visual C # Express 2008 в WinXP внутри экземпляра VirtualBox.Я пробовал и отладочный, и производственный exe-файлы без изменений в результатах.
Проблемы напоминают проблему буферизации или регулирования, но, глядя на внутренний код классов ftp, я не вижу ничего необычногои я специально настраиваю его не на газ.Любые предложения или комментарии об этой конкретной библиотеке компонентов ftp?