2010-07-09 149 views
1

我遇到了一段时间一直在困扰我的问题。c#:尝试下载文件时发生随机FTP错误(550)

我是从一个FTP服务器在.NET中下载文件,并随机(我坚持,它是完全随机的),我收到以下错误:

System.Net.WebException:远程服务器返回错误:(550)文件不可用(例如,文件未找到,无法访问)。

我们在.net中的代码实现了重试机制,所以当这个错误发生时,代码将再次下载所有文件。然后,有时候,它会成功,其他时候,550错误会发生在另一个文件上,有时在同一个文件上,它是完全随机的。

我们是DownloadFile方法被调用为每个文件重新下载

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错误会每次都会发生。但是,我们可以尝试下载文件,出现错误,我们尝试再次下载具有相同参数的相同文件,并且它将起作用。而且它会在更大的文件中更频繁地出现。任何想法?

回答

1

请注意,下面只是一个轶事,除了模糊的记忆和假设以外,我没有其他任何东西来支持它。所以不是一个真正的解决方案,只要把它看作是“振作起来,它可能根本不是你的错”。

我认为550错误更可能是由于服务器而不是客户端的问题。我记得在使用旧的ISP维护不当的ftp服务器时经常发生550错误,而且我尝试了各种客户端,但没有发现真正的差异。我还记得看到其他人发布关于相同和其他服务器的类似问题的消息。

我认为处理它的最好方法就是自动重试下载,希望在经过几次尝试之后你会得到它,但显然这意味着你浪费了带宽。

相关问题