2015-01-19 2 views
0

Я использовал ниже код для загрузки файла с FTP-сервера в локальную файловую систему. Но когда я использовал это он показывает следующее сообщение об ошибкеИсключение при загрузке файла с ftpserver

Exception thrown while running the code

Я использовал следующий код

Код сниппета

private string user = "uname"; 
private string pass = "passwd"; 
private FtpWebRequest ftpRequest ; 
private FtpWebResponse ftpResponse ; 
private Stream ftpStream ; 



public void download(string remoteFile, string localFile) 
{ 
    try 
    { 

     ftpRequest = (FtpWebRequest)FtpWebRequest.Create("ftp://uname:[email protected]/foldername/filename"); 

     ftpRequest.Credentials = new NetworkCredential(user, pass); 

     ftpRequest.UseBinary = true; 
     ftpRequest.UsePassive = true; 
     ftpRequest.KeepAlive = false; 


     ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; 

     ftpResponse = (FtpWebResponse)ftpRequest.GetResponse(); 

     ftpStream = ftpResponse.GetResponseStream(); 

     FileStream localFileStream = new FileStream(localFile, FileMode.Create); 

     byte[] byteBuffer = new byte[2048]; 
     int bytesRead = ftpStream.Read(byteBuffer, 0, 2048); 

     try 
     { 
      while (bytesRead > 0) 
      { 
       localFileStream.Write(byteBuffer, 0, bytesRead); 
       bytesRead = ftpStream.Read(byteBuffer, 0, 2048); 
      } 
     } 
     catch (Exception ex) { Console.WriteLine(ex.ToString()); } 

     localFileStream.Close(); 
     ftpStream.Close(); 
     ftpResponse.Close(); 
    } 
    catch (Exception ex) 
    { 

     Console.WriteLine(ex.ToString()); 
     Console.ReadKey(); 
    } 
    return; 
} 

Может кто-нибудь мне помочь в решении этого?

Update

Я также изменил ftpRequest.KeepAlive = false; к ftpRequest.KeepAlive = true;

Но я столкнулся же исключение

+0

Обратитесь к этому сообщению ..it может решить вашу ошибку. http://stackoverflow.com/questions/9815919/the-underlying-connection-was-closed-the-server-committed-a-protocol-violation – Saravanan

+0

@ Saravanan..thanks for ur post ... но когда я его изменил к true также я столкнулся с тем же исключением – wazza

+0

вы также можете попробовать изменить код, обернув «ftprequest» с помощью «using». – Saravanan

ответ

0

Изменение ftpRequest.KeepAlive = false; в ftpRequest.KeepAlive = true;

+0

Не могли бы вы объяснить свое решение? – Magnilex

0

Когда я изменил код, как показано ниже

ftpRequest.UsePassive = false; 

Загружает данный файл с ftp-сервера

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