2010-09-08 34 views
0

我想做一個SMB Web服務器的遠程目錄列表。SMB目錄列表C#

但是我的方法不起作用。撥打DirectoryInfo()的電話抱怨我無法以URi格式給它一個字符串。

這是我想出了:

string smbDirectory = @"\\SERVER\MYSHARE"; 
Uri requestURI = new Uri(smbDirectory); 
List<FileInfo> files = this.listAllFilesInWebDirectory(requestURI); 

List<FileInfo> listAllFilesInWebDirectory(Uri smbDirectory) 
{ 
    string filePattern = "*"; 
    List<FileInfo> returnable = null; 
    DirectoryInfo directory = new DirectoryInfo(smbDirectory.AbsoluteUri); 

    if (directory.Exists == true) 
    { 
     FileInfo[] files = directory.GetFiles(filePattern); 
     returnable = new List<FileInfo>(files); 
    } 
    return returnable; 
} 

我不斷收到一個例外,當我打電話directory.GetFiles(filePattern)

回答

0

看起來我就像DirectoryInfo class只接受本地和UNC文件路徑,而不是URL如http:// ...

+0

對,這很有道理...... :)對不起,我沒有什麼更有用的提供! – ewall 2010-09-08 14:39:06

0

正如ewall說,你不能使用的URI。

爲了做到這一點,擺脫了Uri,而是將smbDirectory字符串傳遞給你的listallfiles函數。

但是,由於這個問題的編輯歷史可能並不能解決真正的問題。

-
如果你想枚舉Web服務器的目錄結構,那麼你將不得不在Web服務器上實現一些東西來支持它。對於MS服務器來說,「簡單」的方法是安裝webdav並利用它的api來做你想做的事情。但是,您可以輕鬆地在服務器上實現自己的Web服務,並以此方式進行查詢。

另一種途徑是配置Web服務器以允許目錄瀏覽。確保你沒有默認的文件集。配置完成後,您可以使用標準的HttpRequest類對服務器進行http調用並解析結果。

第三條路線是安裝FTP服務器,並通過FTP運行命令。


問題是DirectoryInfo類不能用於你想要的。


而且我不相信任何上述真的是你想要的東西要麼給出了一些關於Silverlight和文件訪問你的其他問題。也許你可以確切地說明你想要你的應用程序做什麼以及你想要解決什麼問題。這裏有很多人可以引導你走上正確的道路。