2

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 进程以谁身份运行,该进程都有权访问该目录。但是,由于这不起作用并且我变得绝望,因此我已授予“每个人”对远程目录的所有访问权限作为测试。仍然得到同样的错误。

我猜这是一个权限问题(因为这就是它所声称的)以及代码在指向本地文件时有效的事实。但是,由于我已经授予“每个人”所有权限,所以我不知道可能出了什么问题。

想法?

4

1 回答 1

2

我猜其他文件在另一台机器上,这是一种可能性:https ://serverfault.com/questions/41130/network-service-account-accessing-a-folder-share

另一种可能性是模拟一个可以访问目标文件夹的域帐户 - http://support.microsoft.com/kb/306158

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

于 2012-12-10T22:48:34.620 回答