代码之家  ›  专栏  ›  技术社区  ›  Bill Yang

System.IO.目录。存在于web应用程序中

  •  1
  • Bill Yang  · 技术社区  · 14 年前

    我面临着一个奇怪的问题:

    在.net web应用程序中,有一些代码与此等效:

    if (Directory.Exists("config")) 
    { ... }
    

    它基本上是检查 目录存在,为什么代码是这样写的是我和这个问题。

    让我困惑的是,上面的代码在两个服务器上返回false,在其他服务器上返回true。)我一直以为会变成真的,因为 是Server 2008中的系统目录。)

    问题: 在这两台服务器上,此语句将返回false。我该去哪找?

    限制:我不能更改任何代码(模糊/签名程序集),但我可以完全访问服务器。

    更新:答案显然很简单。。。在这两个特定的服务器上,有人部署了一个行为不同的特定dll的更新版本。该死!

    2 回复  |  直到 14 年前
        1
  •  2
  •   Rebecca Chernoff    14 年前

    MSDN page

    如果在尝试确定指定文件是否存在时发生任何错误,Exists方法将返回false。这可能发生在引发异常的情况下,例如传递的文件名包含无效字符或太多字符、磁盘出现故障或丢失,或者调用者没有读取文件的权限。

    首先,我要仔细检查运行web应用程序的用户(从应用程序池标识、模拟等)是否有访问该目录的权限。

    你说呢 你以为是真的

        2
  •  1
  •   Michael Petrotta user3140870    14 年前

    嗯,我要检查的第一件事是,有问题的目录确实存在于服务器上。

    我假设您传递的是一个绝对路径—请记住,Windows路径不能保证在不同的计算机上是相同的。特别是Windows的本地化版本,可能会打乱您关于哪些目录存在哪些不存在的假设。

    Directory.Exists(@"C:\Windows\system32")
    

    Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.System))
    

    …尽管这一部分的路径似乎不太可能在不同的机器上改变。