【问题标题】:ASP.NET File.Exists returns false when file existsASP.NET File.Exists 在文件存在时返回 false
【发布时间】:2012-10-22 07:20:20
【问题描述】:

当文件实际存在时,File.Exists 返回 false。

我知道如果没有读取权限它会返回 false,但我似乎无法正确处理。

更多信息:

我的 FTP 目录是这样组织的:

Root

    ImageSite

        ImageDirectory

    MySite

        My .aspx.cs File that's calling File.Exists()

我尝试使用与 ImageSite 和 ImageDirectory 相同的 ftp 用户帐户上传 .aspx.cs 文件。没有帮助。

为了确定,我还尝试用反斜杠替换正斜杠。

这是我的代码 - 我将文件路径硬编码为图像目录的完整 ftp 路径。

        string serverUrl =@"\\fs4-n01\blah\blah\blah\ImageSite.com\web\content\Images\" + product.ImageUrl;
        bool exists = File.Exists(serverUrl);

我也想过冒充。我已经在我的 web.config 中使用了一个身份模拟,但它似乎并没有让我同时使用这两个,所以我把这个放在我的代码文件所在的子目录下,在标签下。但它似乎没有这样做。 (无论哪种方式,文件的所有者都与图像目录相同,正如我所提到的。)

我正在使用 ASP.NET 4.0。

任何想法都将不胜感激。

【问题讨论】:

  • 通过 url 看起来您使用的是 samba(文件共享),而不是 ftp。那是对的吗?您实际上可以从代码中的路径在资源管理器中打开文件吗?另外,您的代码是否在其他用户下运行(可能该用户无法访问该文件共享)?
  • 运行该站点的帐户(请参阅应用程序池标识)是否具有读取目录的权限?
  • 不确定,我肯定是通过 FTP 访问的。我从使用 File.GetDirectoryName(Server.MapPath("~"))...
  • 您应该询问您的提供商访问文件系统的路径是什么,因为磁盘可能安装在给定的配置上。
  • @Oded 如何设置这些权限?我认为通过让我的代码文件和图像目录的所有者相同,就不会有权限问题。

标签: c# asp.net file permissions


【解决方案1】:

我打电话给我的托管服务提供商 (Rackspace),并被告知 .NET 的工作方式是出于安全原因,您无法访问内容目录之外的文件。 (对于 ASP 经典网站,它确实让你,到目前为止。)

【讨论】:

  • 你能提供任何文件来备份这些信息吗?
  • @RyanGates 澄清一下,这是针对云站点环境的 Rackspace 特定限制。
  • 我明白了。感谢您添加该警告。
猜你喜欢
  • 2010-10-29
  • 2011-07-23
  • 2017-08-16
  • 1970-01-01
  • 2013-02-22
  • 2019-12-30
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多