【发布时间】: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