【问题标题】:c# : Random FTP error (550) when trying to download filesc#:尝试下载文件时出现随机 FTP 错误 (550)
【发布时间】: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 错误。但是,我们可以尝试下载一个文件,我们得到错误,我们尝试再次下载相同参数的相同文件,它会工作。并且它似乎更频繁地发生在较大的文件中。有什么想法吗?

【问题讨论】:

    标签: c# .net ftp


    【解决方案1】:

    请注意,以下只是轶事,除了模糊的记忆和假设来支持它之外,我没有任何东西。因此,与其说是真正的解决方案,不如把它当作“振作起来,这可能根本不是你的错”。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多