0

我的 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();

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

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

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

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

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

4

3 回答 3

0

目录是否隐藏?

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

顺便说一句-除非您特别想要某些List<T>功能,否则最好将它们保留在原始string[]数组中……实际上,在 3.5 中,LINQ 模糊了List<T>, sinceWhere(...)First(...)适用于数组的优点。

于 2009-05-01T08:19:46.883 回答
0

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

于 2009-05-01T08:20:47.227 回答
0

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

new FileIOPermission(FileIOPermissionAccess.PathDiscovery | FileIOPermissionAccess.Read,dir).Demand();
于 2009-05-01T08:24:29.713 回答