Я использовал ниже код для загрузки файла с FTP-сервера в локальную файловую систему. Но когда я использовал это он показывает следующее сообщение об ошибкеИсключение при загрузке файла с ftpserver
Я использовал следующий код
Код сниппета
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;
Но я столкнулся же исключение
Обратитесь к этому сообщению ..it может решить вашу ошибку. http://stackoverflow.com/questions/9815919/the-underlying-connection-was-closed-the-server-committed-a-protocol-violation – Saravanan
@ Saravanan..thanks for ur post ... но когда я его изменил к true также я столкнулся с тем же исключением – wazza
вы также можете попробовать изменить код, обернув «ftprequest» с помощью «using». – Saravanan