2014-08-25 3 views
0

Мой проект должен загружать и загружать много файлов с и на Unix-сервер, используя ftp в моем windows aoolication. мой код, как этотИногда FTP не работает

ftpRequest = (FtpWebRequest)FtpWebRequest.Create(reviewfilepath); 

        ftpRequest.Credentials = new NetworkCredential(user, pass);       
        ftpRequest.UseBinary = true; 
        ftpRequest.UsePassive = true; 
        ftpRequest.KeepAlive = false; 
        ftpRequest.Proxy = null; 
        ftpRequest.Method = WebRequestMethods.Ftp.UploadFile; 
        ftpStream = ftpRequest.GetRequestStream(); 
        FileStream localFileStream = new FileStream(reviewsourcewordpath, FileMode.OpenOrCreate); 
        byte[] byteBuffer = new byte[bufferSize]; 
        int bytesSent1 = localFileStream.Read(byteBuffer, 0, bufferSize); 

        try 
        { 
         while (bytesSent1 != 0) 
         { 
          ftpStream.Write(byteBuffer, 0, bytesSent1); 
          bytesSent1 = localFileStream.Read(byteBuffer, 0, bufferSize); 
         } 
         string path = cls_appvars.Set_App_Path + cls_appvars.Set_Log_dir + "SystemLog.txt"; 
         System.IO.File.AppendAllText(path, System.DateTime.Now + "***ftp_documents() in cls_accdet***" + jobid + "_review ----- File uploaded Sucessfully" + Environment.NewLine); 
        } 
        catch (Exception ex) { Console.WriteLine(ex.ToString()); } 
        /* Resource Cleanup */ 
        localFileStream.Close(); 
        ftpStream.Close(); 
        ftpRequest = null; 

вопрос в несколько раз FTP failes и получить исключение

 System.Net.WebException: The operation has timed out. 
at System.Net.FtpWebRequest.GetRequestStream() 

Я отключил брандмауэр в клиентской машине, включен ftp.exe и дал полные права для пользователя, но все же я получаю исключение.

Спасибо,

Suressh

ответ

0

Просто увеличить FtpWebRequest тайм-аут, например

ftpRequest.Timeout = 30000 // in milliseconds 
+0

спасибо isalguerio вопрос по-прежнему продолжается .... – Suressh

0

FTP иногда не из-за падения пакетов, некоторые соединения ограничивает или другие технические причины, это будет происходить. Если ваше приложение полагается на эту передачу, введите код повторной логики, прежде чем вернуться с этого вызова. Поместите ваш запрос в цикл, который возвращает контент с успехом или повторяет исключение на третьем сбое.

+0

спасибо stephan, я уже пинг сервера на целый день нет никаких сбоев, я использую механизм повтора, проблема с тем, что он блокирует дальнейшие загрузки и загрузки ftp. остальные ваши предложения .. – Suressh

+0

Хороший пинг не гарантирует хорошую передачу ftp, я боюсь, что вам нужно объединить свои переводы или использовать потоки, чтобы уменьшить блокировку:/ –

+0

Спасибо, что посоветуете stephan, позвольте мне попытаться сообщить вам, результат. другой момент, который я хочу добавить, - это каждый ftp-процесс, который является отдельным фоном. – Suressh

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