ASP.NET无法读取文件:"访问路径...被拒绝"

时间:2012-12-10 22:17:59

标签: asp.net file-permissions

tl; dr:关键位以粗体显示。

我们有一个网站页面,在执行时,应该读取一系列文件,压缩它们并将它们返回给用户。

不幸的是,我们遇到了一个错误:

  

ASP.NET无权访问所请求的资源。考虑   授予对ASP.NET请求的资源访问权限   身份。 ASP.NET具有基本进程标识(通常是   IIS 5上的{MACHINE} \ ASPNET或IIS 6上的网络服务)如果使用的话   该申请不是冒充。如果申请是   冒充通过,身份将是   匿名用户(通常是IUSR_MACHINENAME)或经过身份验证的用户   请求用户。

我尝试访问该文件的行目前如下所示:

using (FileStream x = File.Open(@"\\thedirectory\filename.pdf", FileMode.Open, FileAccess.Read)) { }

(除了尝试打开文件之外,这行没有任何用处,因为现在我只是想看看我是否有访问权。)

此代码有效,如果我将文件复制到计算机上的目录并将路径放在那里,则会打开文件而不会出现问题。但是,如果我去原始文件的远程机器,没有骰子。

我在一个兔子洞里试了一段时间,试图确保无论ASP.NET进程运行的是谁,该进程都拥有该目录的权限。但是,由于那不起作用而且我变得绝望,我已经给了“每个人”对远程目录的所有访问权限作为测试。仍然得到同样的错误。

我猜这是一个权限问题(因为这就是它所声称的)以及代码在指向本地文件时工作的事实。但是,因为我已经给了“所有人”所有权限,所以我对于可能出现的问题感到迷茫。

想法?

1 个答案:

答案 0 :(得分:2)

我猜其他文件在不同的机器上,这里有一个可能性:https://serverfault.com/questions/41130/network-service-account-accessing-a-folder-share

另一种可能性是冒充有权访问目标文件夹的域帐户 - http://support.microsoft.com/kb/306158

或者将服务帐户更改为有权访问目标文件夹的域帐户。