【问题标题】:Directory.GetFiles works, Directory.GetDirectories doesn't on the same directoryDirectory.GetFiles 有效,Directory.GetDirectories 不在同一目录中
【发布时间】:2009-05-01 08:10:55
【问题描述】:

我的 Web 应用程序上有一个简单的文件选择器,它使用 Directory.GetFiles 和 Directory.GetDirectories 来生成 UI。这在我的本地主机上完美运行,但是当我将它上传到我的 Windows Server 2003 主机时,我只能看到文件 - 在同一个目录上,GetFiles 有效,但 GetDirectories 无效。

代码非常简单 - 字符串 dir 由 Server.MapPath 调用创建,然后:

List<string> dirs = Directory.GetDirectories(dir).ToList();
List<string> files = Directory.GetFiles(dir).ToList();

我已经尝试了所有我能想到的安全方面的方法;甚至让“每个人”都可以完全访问网络根目录中的所有目录,即使这样也没什么区别。

因此,如果问题不在于安全性,我将非常感谢一些建议以尝试更多尝试!

更新:我很愚蠢 - 吐出 HTML 的代码包含一些非常古老的测试代码,这些代码对本地没有任何影响,因此没有被注意到和删除,但是这导致服务器上的每个目录都被忽略!那是什么?

if (!subDir.Contains(".")) { ...

在服务器上,所有站点都位于由其域命名的文件夹中 - 在本地,它们不是。我==愚蠢。对不起大家!

【问题讨论】:

    标签: c# asp.net directory getfiles getdirectories


    【解决方案1】:

    目录是否隐藏?

    它们是实际目录,还是(因为这是一个网络服务器)虚拟文件夹?

    顺便说一句 - 除非您特别想要某些 List&lt;T&gt; 功能,否则您不妨将它们留在原始的 string[] 数组中...实际上,在 3.5 中,LINQ 模糊了 List&lt;T&gt; 的优势,因为 @987654324 @、First(...) 等适用于数组。

    【讨论】:

      【解决方案2】:

      您是否检查过该目录是否在您认为的位置? IIS 通常可以将您放在一个临时目录中,因此它可能已将您的所有文件复制到此临时文件夹,但没有任何子目录,因此根本没有。

      【讨论】:

        【解决方案3】:

        如果没有权限,可以强制抛出异常:

        new FileIOPermission(FileIOPermissionAccess.PathDiscovery | FileIOPermissionAccess.Read,dir).Demand();
        

        【讨论】:

          猜你喜欢
          • 2020-06-12
          • 2020-03-21
          • 2023-02-04
          • 2023-03-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-08-02
          • 2012-11-20
          相关资源
          最近更新 更多