2011-01-18 3 views
1

Я думаю использовать следующий код, но я хочу передать сотни файлов, и он не выглядит жизнеспособным для подключения, а затем отключается при каждой передаче файлов.Загрузка нескольких файлов в .NET через FTP

request = (FtpWebRequest) FtpWebRequest.Create(FtpAddress + file); 

request.Method = WebRequestMethods.Ftp.UploadFile; 
request.Credentials = new NetworkCredential(User, Pass); 

request.UsePassive = IsPassive; 
request.UseBinary = true; 
request.KeepAlive = false; 

FileStream fs = File.OpenRead(""); 
byte[] buffer = new byte[fs.Length]; 
fs.Read(buffer, 0, buffer.Length); 
fs.Close(); 

Stream ftpStream = request.GetRequestStream(); 
ftpStream.Write(buffer, 0, buffer.Length); 

ftpStream.Close(); 

Какие параметры у меня есть для загрузки всех этих файлов с использованием одного соединения?

ответ

2

Я не проверил это, чтобы быть правдой, но в моей быстрой 30 секунд поиска, если вы установите

request.KeepAlive = true; 

на каждом запросе вы создаете, кроме последнего, по-видимому, только первый FtpWebRequest делает полный логин подключение.

Тогда при создании последнего FtpWebRequest установите

request.KeepAlive = false; 

и закрывает соединение, когда сделано. Вы можете проверить это, если у вас есть доступ к журналам FTP-сервера.

+0

это звучит примерно справа. Попробуем завтра. Большое спасибо. – zish

+0

Итак, этот ответ был просто принят вслепую? У него также есть несколько повышений? Из всего, что я действительно протестировал и опробовал, единственное, что сделает KeepAlive, это открыть соединение, если вы закроете созданный объект FtpWebResponse. Было бы замечательно увидеть какой-то код, используемый для достижения ожидаемых результатов. –

+0

Arvo, этот ответ/вопрос больше 4 лет, тогда StackOverflow несколько отличался. Я просто попытался указать zish в правильном направлении, поскольку других ответов не было. Должно быть, они работали для них, так как они приняли ответ. Из того, что вы говорите о KeepAlive, похоже, что я предлагаю работать. Вы создаете FTPWebRequest для каждого файла, который хотите загрузить, с запросом.KeepAlive = true, а затем на последнем FTPWebRequest вы устанавливаете его в false. – Moose

Смежные вопросы