Я не знаю точно, какую ошибку вы получаете при закрытии потока, но в нашем приложении мы делаем много больших загрузок файлов (видео и изображений). Вот как мы пишем в наш поток FTP:
request.KeepAlive = false; // This eliminated some of our stream closing problems
using (Stream stream = request.GetRequestStream())
{
stream.Write(file.Data, 0, file.Data.Length);
}
Я думал, что выполнение блока using
будет эффективно выполнять вызов Close
самостоятельно, но, возможно, он также выполняет другую необходимую очистку. Также обратите внимание, что я отключил поддержку активности FTP, что вызвало у нас проблемы на некоторых сторонних FTP-сайтах, на которые мы загрузили.
Вы действительно должны смотреть на конкретное исключение, которое вы получаете, а не глотать все исключения. Сообщение об ошибке, скорее всего, скажет вам, что не так. Наиболее распространенные проблемы, с которыми мы столкнулись, были связаны с активным или пассивным режимом и поддержкой активности.
Edit:
Чтобы выяснить, что на самом деле происходило, когда у нас были проблемы с FTP с CDN (а это происходит слишком часто), нам иногда приходилось включать трассировку в нашем приложении. См. эту ссылку , чтобы узнать, как включить трассировку. Другой вариант - использовать такой инструмент, как Wireshark, чтобы прослушать диалог между вашим приложением и FTP-сервером. Если вы видите, что происходит в протоколе FTP, у вас будет гораздо больше шансов решить проблему.