tl;dr:关键位以粗体显示。
我们有一个网站页面,在执行时,应该读取一系列文件,将它们压缩,然后将它们返回给用户。
不幸的是,我们遇到了一个错误:
ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.
我尝试访问该文件的行当前如下所示:
using (FileStream x = File.Open(@"\\thedirectory\filename.pdf", FileMode.Open, FileAccess.Read)) { }
(除了尝试打开文件之外,这一行没有做任何有用的事情,因为现在我只是想看看我是否有访问权限。)
此代码有效,如果我将文件复制到我的计算机上的目录并将路径转到那里,则可以毫无问题地打开文件。但如果我转到原始文件所在的远程计算机,则没有骰子。
我陷入了困境一段时间,试图确保无论 ASP.NET 进程以谁的身份运行,该进程都拥有该目录的权限。然而,由于这不起作用并且我变得绝望,我已授予“每个人”对远程目录的所有访问权限作为测试。仍然遇到同样的错误。
我猜测这是一个权限问题(因为这就是它所声称的),再加上代码在指向本地文件时可以工作的事实。但是,由于我已经向“每个人”授予了所有权限,所以我不知道可能会出现什么问题。
想法?
最佳答案
我猜测其他文件位于不同的计算机上,这是一种可能性:https://serverfault.com/questions/41130/network-service-account-accessing-a-folder-share
另一种可能性是模拟有权访问目标文件夹的域帐户 - http://support.microsoft.com/kb/306158
或者将服务帐户更改为有权访问目标文件夹的域帐户。
关于ASP.NET 无法读取文件 : "access to the path ... is denied",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13810240/