Directory.GetFiles工作,Directory.GetDirectories不在同一目录上

时间:2009-05-01 08:10:56

标签: c# asp.net directory getfiles getdirectories

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

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

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

我已经尝试过所有我能想到的安全方面的事情;甚至可以让“Everyone”完全访问web根目录中的所有目录,即使这没有任何区别。

因此,如果问题不在于安全问题,我会非常感谢有关更多事情的一些建议!

更新:我非常愚蠢 - 吐出HTML的代码包含一些非常旧的测试代码,这些代码在本地没有任何差异所以没有被注意到并删除,但是导致服务器上的每个目录都被忽略!它是什么?

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

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

3 个答案:

答案 0 :(得分:0)

目录是否隐藏?

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

顺便说一下 - 除非你特别想要一些List<T>功能,否则你最好将它们保留在原来的string[]数组中......事实上,使用3.5,LINQ模糊了{{1}的优点},因为List<T>Where(...)等适用于数组。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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