在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 事件消息:发生未处理的访问异常。
答案 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");
}