Deseo descargar el archivo del servidor ftp. He escrito el código siguiente para descargar el archivo de FTP"La conexión subyacente estaba cerrada" al descargar un archivo de un servidor ftp
public void downloadFile(string FTPAddress, string filename, string username, string password, string destFile)
{
try
{
FtpWebRequest request = FtpWebRequest.Create(FTPAddress + filename) as FtpWebRequest;
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(username, password);
request.UsePassive = true;
request.UseBinary = true;
request.UseBinary = true;
request.KeepAlive = false; //close the connection when done
request.Timeout = 60000;
//Streams
using (var response = request.GetResponse())
{
using (Stream reader = response.GetResponseStream())
{
byte[] buffer = new byte[1024];
using (Stream streamFile = File.Create(destFile))
{
while (true)
{
int bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
{
break;
}
else
{
streamFile.Write(buffer, 0, bytesRead);
}
}
}
}
}
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
Pero cuando se ejecuta este código darme excepción:
la conexión subyacente se cerró: Se ha producido un error inesperado en un recibir.
¿Qué puede ser un problema que me ayude ...
Cuando la propiedad KeepAlive se establece en false, la conexión de control se cierra cuando se llama al método Close. ¿En qué línea obtiene esta excepción? ¿Intentó usar el valor predeterminado de la propiedad Timeout (Infinity)? – Ofiris
Quizás es un problema de firewall. ¿Has probado usar el modo activo en lugar de pasivo? – Arjen
Este es un problema con su servidor o problemas tcp/ip locales (firewall, antivirus, etc.). El código funciona bien, por ejemplo, esto crea un archivo ccrisconv.txt en mi disco: 'downloadFile (" ftp://ftp.nlm.nih.gov/ "," nlmdata/sample/ccris/ccrisconv.txt ", null , null, "ccrisconv.txt"); ' –