Póster por primera vez, lector de larga duración. Tengo un problema realmente molesto que me está poniendo de los nervios. Tengo un programa configurado para que escuche nuevos archivos en un servidor FTP, si hay un archivo nuevo lo descargo. A partir de ahí, trabajo en parte de la información del archivo, etc. Mi problema surge cuando reviso mi secuencia la segunda vez. Es decir, en el primer archivo que descargo todo está totalmente bien, pero tan pronto como se detecta un nuevo archivo y mi programa intenta descargarlo, mi programa simplemente se cuelga.El programa se cuelga en FtpWebResponse
private static void DownloadFile(string s)
{
try
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://blabla.com/"+s);
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential("xxx" ,"zzz");
using (FtpWebResponse partResponse = (FtpWebResponse)request.GetResponse())
{
Stream partReader = partResponse.GetResponseStream();
byte[] buffer = new byte[1024];
FileInfo fi = new FileInfo(path);
FileStream memStream = fi.Create();
while (true)
{
int bytesRead = partReader.Read(buffer, 0, buffer.Length - 1);
if (bytesRead == 0)
break;
memStream.Write(buffer, 0, bytesRead);
}
partResponse.Close();
memStream.Close();
}
Console.WriteLine(DateTime.Now + " file downloaded");
MoveFileToInProgress(s);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
La línea que cuelga de éste es: usando (FtpWebResponse partResponse = (FtpWebResponse) request.GetResponse())
La razón aquí mi método es estático porque está justo Im ejecutando en una proyecto diferente para probarlo ... Mi pregunta aquí es, ¿cómo es que solo muere en el segundo archivo? ¡He estado mirando a ciegas por horas!
Mi el programa aún se cuelga en la misma línea, en tu código se traduce a esta línea: using (Stream strm = ftp.GetResponse(). GetResponseStream()) Creo que tendré que buscar lugares donde no cerré la conexión FTP correctamente o algo ... – MartinNielsen
Podría intentar tener un temporizador en un momento que se rompe y/o vuelve a intentar después de unos segundos (más tiempo si los procesos toman más tiempo) – Daanvl
¿Alguna vez se dio cuenta de esto? mi código también se cuelga en los últimos bytes –