【问题标题】:file.exists always return falsefile.exists 总是返回 false
【发布时间】:2012-11-14 12:01:54
【问题描述】:

我有一个问题,file.exists aways 返回 false。

情况: 执行 file.exists 的服务器 1 有一个映射到位于远程位置的服务器 2 的网络驱动器。

访问和浏览网盘就OK了。

但是在运行网页时,我总是得到一个错误。 连路径都ok,de文件也存在。

我尝试了两种情况:U:/folders/file.txt 和 //ipadress/folders/file.txt

server2 上的共享文件夹甚至将权限设置为所有人完全控制。

奇怪的是,在 Visual Studio 中运行调试时,它可以工作,并且 file.exists 返回 true。

【问题讨论】:

  • 就是把你的斜线字符弄混这么简单吗?
  • 不,已经检查过了。猜猜它与某些权限有关
  • 你使用File.Exists(path)还是FileInfo.Exists
  • 您是否在管理员帐户下运行 Visual Studio 并在用户帐户下运行您的程序?
  • U:\folders\file.txt 和 \\ipadress\folders\file.txt。斜线应该是这样的。

标签: vb.net .net


【解决方案1】:

尝试将其解析为 Uri 并检查 LocalPath 属性。如果您不想处理可能的异常,Uri 有一个“TryCreate”用于此目的。

如果您从网页访问它,则该网页可能没有映射(即 U:),您需要使用全名(如 \\myserver\folder\etc)。检查此线程中的第二个答案,了解一些非常有用的方法,可以让您执行此操作:How do I determine a mapped drive's actual path?

【讨论】:

  • 这是解决方案的一部分:asp.net 用户没有映射驱动器。我删除了 file.exists,并切换到 url 上的 http 响应。
【解决方案2】:

驱动器是按用户映射的,而不是按机器映射的。

这意味着如果您使用自己的用户帐户映射了一个驱动器,但服务器正在使用另一个驱动器,则服务器将看不到您映射的驱动器。

【讨论】:

    【解决方案3】:

    我猜想在用户的登录脚本中添加以下命令,在 IIS 或您的应用程序服务的“登录身份:”选项中设置的用户应该可以解决问题。

    net use x: \\SERVERNAME\SHARENAME
    

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-20
      • 2013-02-22
      • 2016-04-29
      • 1970-01-01
      相关资源
      最近更新 更多