【问题标题】:Access to the path (path name) is denied using File.Open使用 File.Open 拒绝访问路径(路径名)
【发布时间】:2019-05-29 16:08:08
【问题描述】:

在 Windows 10 机器上本地调试,VS2015。

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

这会引发异常:

System.UnauthorizedAccessException:对路径“F:\webroot\subfolder”的访问被拒绝。

我尝试添加具有完全权限的每个人,添加具有完全权限的每个用户,打开安全策略审核并检查安全日志以发现请求用户,但没有出现任何内容,就好像它实际上不是安全错误一样,a不同的文件夹名称,以及我可以在网上找到的所有其他内容,包括添加 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 事件消息:发生未处理的访问异常。

【问题讨论】:

  • 如果您在路径实际指向目录时尝试打开“文件”,就会发生这种情况。根据您发布的异常消息,这可能是问题所在。
  • 你没有在任何地方使用PathToFile...

标签: c# asp.net


【解决方案1】:

也许是因为你用FilePath而不是PathToFile调用FileOpen,所以:

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");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-11
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    相关资源
    最近更新 更多