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进程运行的是谁,该进程都拥有该目录的权限。但是,由于那不起作用而且我变得绝望,我已经给了“每个人”对远程目录的所有访问权限作为测试。仍然得到同样的错误。
我猜这是一个权限问题(因为这就是它所声称的)以及代码在指向本地文件时工作的事实。但是,因为我已经给了“所有人”所有权限,所以我对于可能出现的问题感到迷茫。
想法?
答案 0 :(得分:2)
我猜其他文件在不同的机器上,这里有一个可能性:https://serverfault.com/questions/41130/network-service-account-accessing-a-folder-share
另一种可能性是冒充有权访问目标文件夹的域帐户 - http://support.microsoft.com/kb/306158
或者将服务帐户更改为有权访问目标文件夹的域帐户。