使用File.Open拒绝访问路径(路径名)

时间:2019-05-29 16:08:08

标签: c# asp.net

在Windows 10计算机VS2015上进行本地调试。

我需要打开一个具有“只读”访问权限的文件。该文件存在于Web应用程序的子文件夹中。

这引发异常:

System.UnauthorizedAccessException:拒绝访问路径'F:\ webroot \ subfolder'。

我尝试添加具有完全权限的每个人,添加具有完全权限的每个用户,打开安全策略审核并检查安全日志以发现发出请求的用户,但其中什么都没有出现,好像这实际上不是安全错误,不同的文件夹名称,以及我可以在网上找到的所有其他内容,包括添加ASPNET用户-没有要添加的此类用户。

计算出的路径是正确的物理磁盘路径。该路径在webroot内部。

string FilePath = HttpContext.Current.Server.MapPath("\\Upload");
string PathToFile = FilePath + "\\" + idFileName;
Stream fs = File.Open(FilePath, FileMode.Open, FileAccess.Read);

最后一行代码引发异常。

ASP.NET网页输出: 拒绝访问路径“ F:\ webrootname \ Upload”。

应用程序事件日志:

事件代码:4011 事件消息:发生未处理的访问异常。

1 个答案:

答案 0 :(得分:3)

也许是因为您使用的是FileOpen而不是计算的FilePath来调用PathToFile,所以:

Stream fs = File.Open(PathToFile, FileMode.Open, FileAccess.Read);

此外,您可以在打开文件之前进一步检查文件是否存在:

string FilePath = HttpContext.Current.Server.MapPath("\\Upload");
string PathToFile = FilePath + "\\" + idFileName;
if(System.IO.File.Exists(PathToFile))
{
    Stream fs = File.Open(PathToFile, FileMode.Open, FileAccess.Read);
}
else
{
    // use whatever logger to trace your application
    log.Error("The file : + PathToFile + " does not exist");
}