2010-07-09 147 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錯誤,而且我嘗試了各種客戶端,但沒有發現真正的差異。我還記得看到其他人發佈關於相同和其他服務器的類似問題的消息。

我認爲處理它的最好方法就是自動重試下載,希望在經過幾次嘗試之後你會得到它,但顯然這意味着你浪費了帶寬。

相關問題