c#:尝试下载文件时出现随机FTP错误(550)

时间:2010-07-09 18:58:14

标签: c# .net ftp

我遇到的问题一直困扰着我。

我从.net中的FTP服务器下载文件,随机(我坚持认为,这是完全随机的),我收到以下错误:

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 个答案:

答案 0 :(得分:1)

请注意,以下只是轶事,除了含糊不清的记忆和假设之外我什么也没有。因此,而不是一个真正的解决方案,只需把它作为“振作起来,它可能根本不是你的错”。

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

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

相关问题