【问题标题】:ASP.NET cannot read file: "access to the path ... is denied"ASP.NET 无法读取文件:“访问路径...被拒绝”
【发布时间】:2012-11-28 09:57:12
【问题描述】:

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

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

很遗憾,我们遇到了错误:

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

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

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

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

此代码有效,如果我将文件复制到我机器上的目录并让路径转到那里,则可以毫无问题地打开文件。但是如果我去原始文件所在的远程机器,没有骰子。

我陷入了一段时间的困境,试图确保无论 ASP.NET 进程以谁的身份运行,该进程都有权访问该目录。但是,由于这不起作用并且我变得绝望,我已授予“每个人”对远程目录的所有访问权限作为测试。仍然出现同样的错误。

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

想法?

【问题讨论】:

  • 您是否在 LocalHost 中进行测试?如果您是,这似乎是一个 ASPNET 用户帐户问题。试试看你是否有权限用这个账号在这个文件夹中写/读。

标签: asp.net file-permissions


【解决方案1】:

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

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

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

【讨论】:

  • 我们不能做一般的模拟,因为这是一个非常大的预先存在的商业网站......对全球变化的测试是令人望而却步的。但这确实让我觉得我可以将这个功能放到它自己的目录中,并将本地 web.config 放在该目录中,并在那里进行模拟。 (不幸的是,我现在不能尝试这个......但是当我可以时,我会报告结果。)我也会在可能的时候(可能明天早些时候)看看你的第一个选择。谢谢你的指点。
  • 感谢您的选择。第二个选项对我有用(模拟一个用户,专门为此访问创建,并将其放入只有该文件的目录中的 web.config ),但其他选项听起来像是可能对其他人有用的好选项有类似的问题。
猜你喜欢
  • 1970-01-01
  • 2013-12-15
  • 2011-10-31
  • 2017-07-29
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
相关资源
最近更新 更多