2013-04-30 88 views
0

我有代碼什麼獲取某個FTP目錄的內容。在我測試過的一些服務器上,它工作正常。獲取FTP目錄內容的問題,如果它是空的

但是在一個服務器上,當我們嘗試獲得響應時,此方法會引發異常。

public static List<string> ListDirectory(string dirPath, string ftpUser, string ftpPassword) 
    { 
     List<string> res = new List<string>(); 

     FtpWebRequest request = (FtpWebRequest)WebRequest.Create(dirPath); 
     request.Method = WebRequestMethods.Ftp.ListDirectory; 
     request.Credentials = new NetworkCredential(ftpUser, ftpPassword); 
     request.KeepAlive = false; 

     FtpWebResponse response = (FtpWebResponse)request.GetResponse(); 

     Stream responseStream = response.GetResponseStream(); 
     StreamReader reader = new StreamReader(responseStream); 
     while (!reader.EndOfStream) 
     { 
      res.Add(reader.ReadLine()); 
     } 
     reader.Close(); 
     response.Close(); 

     return res; 
    } 

在保持部分我有這樣的事情

catch (WebException e) 
{ 
    FtpWebResponse response = (FtpWebResponse)e.Response; 
    /*in my case response.Status = ActionNotTakenFileUnavailableOrBusy*/ 
    .... 
} 

它的工作原理之前,但現在當文件夾爲空失敗。如果有什麼有效的話。我可以用TotalCommander看到這個目錄。

任何想法爲什麼?

+0

你被允許使用一個外部庫,而不是內置類? – Steve 2013-04-30 14:48:39

+0

是的,我允許。但它需要很多改變。 – Vitalii 2013-04-30 15:07:42

+0

好的,我將使用CodePlex提供的免費System.Net.FtpClient添加一個示例。告訴我你是否可以使用它 – Steve 2013-04-30 15:20:28

回答

0

這是一個如何使用CodePlex提供的免費庫System.Net.FtpClient獲取遠程目錄列表的示例。
我已經在很多場合用它,在我看來,是更容易

public void GetListing() 
{ 
    using (FtpClient conn = new FtpClient()) 
    { 
     conn.Host = "your_ftp_site_url"; 
     conn.Credentials = new NetworkCredential("your_user_account", "your_user_password"); 
     foreach (FtpListItem item in conn.GetListing(conn.GetWorkingDirectory(), FtpListOption.Modify | FtpListOption.Size)) 
     { 
       switch (item.Type) 
       { 
        case FtpFileSystemObjectType.Directory: 
         Console.WriteLine("Folder:" + item.Name); 
         break; 
        case FtpFileSystemObjectType.File: 
         Console.WriteLine("File:" + item.Name); 
         break; 
      } 
     } 
    } 
} 

工作,你可以找到download from this pages

+0

不幸的是,我有一個例外,即「路徑是正確的,但沒有答案」。看起來和以前一樣 – Vitalii 2013-04-30 15:52:48