代码之家  ›  专栏  ›  技术社区  ›  Brock Woolf

使用c列出smb目录#

c#
  •  0
  • Brock Woolf  · 技术社区  · 15 年前

    我正在尝试执行SMB Web服务器的远程目录列表。

    但是我的方法不行。呼叫 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) .

    2 回复  |  直到 15 年前
        1
  •  0
  •   ewall    15 年前

    在我看来 DirectoryInfo class 只接受本地和UNC文件路径,不接受http://之类的URL…

        2
  •  0
  •   ChrisLively    15 年前

    正如ewall所说,您不能使用uri。

    为了做到这一点,去掉URI,而是将smbdirectory字符串传递给listalfiles函数。

    但考虑到这个问题的编辑历史,这可能无法解决真正的问题。

    ——
    如果要枚举Web服务器的目录结构,则必须在Web服务器本身上实现一些功能来支持此功能。对于MS服务器,“简单”的方法是安装WebDAV并利用它的API来做您想要做的事情。但是,您也可以很容易地在服务器上实现自己的Web服务,并以这种方式进行查询。

    另一种路由是将Web服务器配置为允许目录浏览。确保没有默认文档集。配置后,可以使用标准的httpRequest类对服务器进行HTTP调用并分析结果。

    第三种方法是安装一个ftp服务器,然后通过ftp运行命令。


    重点是DirectoryInfo类不能满足您的需要。


    我不相信上面的任何一个都是你想要的,或者考虑到其他一些关于Silverlight和文件访问的问题。也许您可以准确地说明您希望应用程序做什么,以及您试图解决什么问题。这里有很多人可以指引你走上正确的道路。