第一次海报,长期读者。我有一个非常烦人的问题,这让我很紧张。我已经设置了一个程序,所以我在 FTP 服务器上监听新文件,如果有新文件我下载它。从那里我处理文件中的一些信息等。当我第二次运行我的序列时,我的问题就出现了。也就是说,在我下载的第一个文件上,一切都很好,但是一旦检测到新文件并且我的程序尝试下载它,我的程序就会挂起。
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);
}
}
它挂在上面的一行是: using (FtpWebResponse partResponse = (FtpWebResponse)request.GetResponse())
我在这里的方法是静态的原因是因为我只是在不同的项目中运行它来测试它。我的问题是,为什么它只在第二个文件上死掉?我已经盯着自己瞎了好几个小时了!