【发布时间】:2010-07-09 18:58:13
【问题描述】:
我遇到了一个困扰我一段时间的问题。
我正在从 .net 中的 FTP 服务器下载文件,并且随机(我坚持认为它是完全随机的),我收到以下错误:
System.Net.WebException:远程服务器返回错误:(550) 文件不可用(例如,找不到文件,无法访问)。
我们在.net中的代码实现了重试机制,所以当这个错误发生时,代码会重新下载所有文件。那么,有时会成功,有时会在另一个文件上出现550错误,有时在同一个文件上,它是完全随机的。
我们是 DownloadFile 方法的一个 sn-p,每个要下载的文件都会调用该方法
byte[] byWork = new byte[2047];
...
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(_uri.ToString() + "/" + filename));
request.Method = WebRequestMethods.Ftp.DownloadFile;
request.Credentials = new NetworkCredential(_Username, _Password);
using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())
{
using (Stream rs = response.GetResponseStream())
{
using (FileStream fs = new FileStream(destination, FileMode.Create))
{
do
{
iWork = rs.Read(byWork, 0, byWork.Length);
fs.Write(byWork, 0, iWork);
} while (iWork != 0);
fs.Flush();
}
}
}
再一次,让我烦恼的是,如果这段代码有错误,那么每次都会发生 550 错误。但是,我们可以尝试下载一个文件,我们得到错误,我们尝试再次下载相同参数的相同文件,它会工作。并且它似乎更频繁地发生在较大的文件中。有什么想法吗?
【问题讨论】: