为什么我的文件在没有任何限制的情况下却由于权限不足而无法读取(HTTP 错误 500.19)?

2023-12-13

当我尝试运行 ASP.NET 站点时(我第一次尝试让它运行),我收到此错误:

enter image description here

然而查看所涉及的文件(\C:\EnhancedSalesReporting\customerreportingnet\customerreportingnet\web.config),它似乎没有任何限制/权限不足:

enter image description here

enter image description here

这里真正的问题是什么,或者我必须做什么才能克服这个令人沮丧的障碍?

asp.net web.config 500.19内部服务器错误配置文件权限不足

UPDATE

当我以不同的方式处理它时,在 IIS 中创建一个虚拟目录,将其指向这些文件的位置,然后在 VS 中选择“文件”>“打开网站...”,我的表现并没有更好,真的。错误页面是不同的,但我都被困住了。描述了该障碍here.

UPDATE 2

当我尝试按照已接受的答案中的步骤进行操作时肯·怀特评论中提供的链接,通过尝试将“IIS_IUSRS”添加到“安全”选项卡中的 Web.Config 组或用户名中,我得到“未找到名称 - 找不到名为“IIS_IUSRS”的对象..."

enter image description here

我是否以错误的方式处理这个问题?无论我尝试通过 Windows 资源管理器还是从 IIS7.5 中的内容视图窗格编辑 Web.Config,我都会得到相同的结果 - 是否还有其他含义?

UPDATE 3

上面引用的那篇文章的另一个提示是,“您还应该检查 applicationhost.config 文件中的只读属性"

这值得一试,但是哪一个呢?我的硬盘上有 9 个 applicationhost.config 文件,其中四个看起来可能是潜在客户,位于以下位置:

C:\Program Files (x86)\IIS Express
C:\Program Files\IIS Express
C:\Users\cshannon\MyDocuments\IIS Express
C:\Windows\System32\inetsrv

其中哪一个(如果有的话)将 readonly 设置为 false 会更有利?

UPDATE 4

这是对 Michael Liu 的回答的回应:

谢谢,迈克尔;

我按照你的步骤操作,但仍然出现相同的错误页面。我原以为它会起作用,所以我有点惊讶(甚至羞愧),因为我最终得到了相同的旧错误页面。

顺便说一句,我在任务管理器中没有看到“详细信息”选项卡,但“进程”选项卡中有一个“显示所有用户的进程”。

也许这就是问题所在——有three任务管理器中的 w3wp.exe 条目:

Image Name      User Name
----------      ---------
w3wp.exe *32    DefaultAppPool
w3wp.exe        classicEservice 
w3wp.exe        NETWORK SERVICE

应该只有一个吗?

UPDATE 5

重新启动 IIS7.5 后,任务管理器中“只有”两个 w3wp.exe 条目:

w3wp.exe *32 (DefaultAppPool)
w3wp.exe (NETWORK SERVICE)

那么2个1太多了吗?

UPATE 6

回答迈克尔的更新步骤:

Application Pool == classicEservice

在“应用程序池”中,classicEservice 的值是:

Status == Started
.NET Framework Version == v2.0
Managed Pipeline Mode == Classic
Identity == ApplicationPoolIdentity
Applications == 5

再次按照步骤操作,但用“classicEservice”替换“DefaultAppPool”肯定会让我走上正轨,因为我不再看到 500.19 err 页面。现在正处于“沙漏”状态http://localhost/CustomerReportingNET/pages/custmaint_entry.aspx.

我认为也许“/pages/custmaint_entry.aspx”应该被删除;我会看看我需要做什么才能实现这一目标......

UPDATE 7

第一次它“沙漏”直到奶牛回家,第二次(和第三次)它向我展示了这个:

enter image description here

UPDATE 8

我尝试了“启动而不调试”并去掉了 URL 的后端,这样它就只是“http://localhost/CustomerReportingNET/”但它仍然像沙漏一样(或者我猜是“蓝色旋转甜甜圈”),就像一个喝了过量能量饮料的旋转苦行僧。


错误“由于权限不足,无法读取配置文件”意味着 IIS 工作进程 w3wp.exe 正在无权访问 Web.config 的帐户下运行。事实上,Web.config 文件权限的屏幕截图显示了一组非常严格的帐户。

首先,确定 w3wp.exe 正在以哪个帐户运行:

  1. 在 IIS 管理器中,在左侧树中找到并选择您的虚拟目录。
  2. In the Actions在右侧窗格中,单击基本设置.
  3. 记下配置的内容应用程序池,然后单击Cancel.
  4. Select 应用程序池在左侧树中(它应该位于列表顶部附近)。
  5. 在应用程序池列表中,找到您在步骤 3 中记下的应用程序池,然后查看Identity column.

IIS 7.5 及更高版本(Windows 7、Windows Server 2008 R2)

我将假设配置的应用程序池是 DefaultAppPool,其标识是 ApplicationPoolIdentity,这意味着虚拟账户由 IIS 为应用程序池创建。 (如果它们是其他东西,请告诉我。)

您需要允许此虚拟帐户访问您的应用程序文件夹:

  1. 在 Windows 资源管理器中,打开包含 Web.config 的文件夹的“属性”对话框 (C:\EnhancedSalesReporting\customerreportingnet\customerreportingnet)。
  2. On the Security选项卡,单击Edit按钮打开权限对话框,然后单击Add.
  3. In the 选择用户对话框中,单击地点按钮,选择您的计算机(可能是列表中的第一项,以及屏幕截图中的 IBM-JBAKER),然后单击OK.
  4. In the Enter the object names to select text box, type IIS APPPOOL\DefaultAppPool (without any trailing spaces), and then click OK.
    • 或者,您可以授予访问权限all通过键入 IIS 虚拟帐户IIS_IUSRS反而。
  5. 回到权限对话框,读取并执行 and Read中的复选框Allow列应该已经被选中,所以只需单击OK.

IIS 6.0/7.0(Windows Vista、Windows Server 2003/2008)

在这些操作系统上,w3wp.exe 作为“真实”帐户(例如 NETWORK SERVICE)而不是虚拟帐户运行。按照上一节中的步骤进行操作,但在步骤 4 中,替换任务管理器中显示的实际帐户(或IIS_WPG) for IIS APPPOOL\默认应用程序池 (or IIS_IUSRS).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的文件在没有任何限制的情况下却由于权限不足而无法读取(HTTP 错误 500.19)? 的相关文章

随机推荐