Ftp Upload выдает исключение Невозможно записать данные в транспортное соединение. Существующее соединение было принудительно закрыто удаленным хостом

У меня есть приложение Windows Form, в котором я использую фоновый рабочий для загрузки файлов FTP. После загрузки 209 файлы успешно он выдал ошибку на файл, который имел размер только 7.8kb, что While Processing Img1.jpg Unable to write data to the transport connection. An existing connection was forcibly closed by the remote host,

string uri1;

ftpInfoUpload = LoadHostedSiteData(hs);
ftpInfoUpload[5] = imgRow["Filename"].ToString();

uri1 = String.Format("ftp://{0}/{1}/images/{2}", ftpInfoUpload[1], ftpInfoUpload[2], ftpInfoUpload[5]);

requestUpload = (FtpWebRequest)WebRequest.Create(uri1);
requestUpload.UsePassive = false;
requestUpload.UseBinary = true;
requestUpload.Method = WebRequestMethods.Ftp.UploadFile;
requestUpload.Credentials = new NetworkCredential(ftpInfoUpload[3], ftpInfoUpload[4]);


requestUpload.ContentLength = memStream.Length;
byte[] buff = new byte[bufferSize];
int contentLen;

// Stream to which the file to be upload is written
Stream strm = requestUpload.GetRequestStream();
memStream.Seek(0, SeekOrigin.Begin);
contentLen = memStream.Read(buff, 0, bufferSize);
                            // Till Stream content ends
while (contentLen > 0)
{   
    // Write Content from the file stream to the FTP   Upload Stream
    strm.Write(buff, 0, contentLen);
    contentLen = memStream.Read(buff, 0, bufferSize);
}

//Close the file stream and the Request Stream
strm.Close();
strm.Dispose();
ftpStream.Close();
memStream.Close();
//responseUpload.Close();
responseDownload.Close();

И идеи, что происходит?

1 ответ

Решение

Я поставил ftprequest.KeepAlive=true & задавать ftprequest.ConnectionGroupName = "Some Value", так что базовый код не должен создавать новое соединение с тем же FTP-сервером. Я нашел это решение здесь. Я также нашел это полезным. Также убедитесь, что не создали новый NetworkCredential объект каждый раз, когда вы передаете файл, который может вызвать исключение. Я проверил мой код дважды, передавая 300 файлов, и, кажется, работает отлично и быстро. настройка KeepAlive=false может делать переводы медленно

Другие вопросы по тегам