由于权限不足,无法读取 web.config 文件

Cannot read web.config file due to insufficient permissions

提问人:А.Терентьев 提问时间:10/30/2023 更新时间:11/2/2023 访问量:121

问:

我做了以下步骤:

  1. 重新安装 Windows Server 2008 R2 SP1

  2. 安装 iis

  3. 安装 VS 2022 17.1.4 并创建新的 ASP.Net 核心应用(使用标准模板)并发布

    但是当我尝试打开该网站时,我遇到了一个错误

500 - 内部服务器错误。

当我尝试双击IIS管理器中的“错误页面.NET”图标时,我在读取时出错

文件: ?\D:\monitor22\web.config

对文件夹 “ ?\D:\monitor22” 和池凭据的访问由管理员进行。我该如何解决这个问题?

asp.net IIS

评论

1赞 DavidG 10/30/2023
Windows 2008?哇!
0赞 А.Терентьев 10/30/2023
在几台 2008 年的服务器上一切都对我有用,现在这是一个临时的强制解决方案
1赞 Lex Li 10/30/2023
告诉我们有关驱动器 D. 映射驱动器的更多信息?此外,由于 Windows 的生命周期结束有未修补的漏洞,预计这里的人无法为您提供太多帮助。
0赞 YurongDai 10/31/2023
D:\monitor22 是发布应用程序的文件夹吗?
0赞 А.Терентьев 10/31/2023
是,D:\monitor 发布应用的文件夹

答:

0赞 Radheshyam Shah 10/30/2023 #1

web.config 文件没有问题。您只需要向 IIS 用户授予读取文件的权限

  1. 在 IIS 上,打开 Windows 资源管理器,然后选择 Web 应用程序的目录。
  2. 右键单击并选择属性。
  3. 选择“安全”选项卡。
  4. 选择IIS_IUSRS用户,然后单击高级。
  5. 选择“完全控制权限”,然后单击“确定”。

有关参考,请查看以下链接:由于权限不足,无法读取配置文件

检查它,如果这不能解决您的问题,那么应用程序池可能会发生变化。 为此,

  1. 打开 IIS 管理器。
  2. 在左窗格中,右键单击“应用程序池”文件夹,然后单击“添加应用程序池”。
  3. 现在将名称填写为项目名称
  4. 在左窗格中,展开“应用程序池”。
  5. 右键单击“趋势”,然后选择“高级设置”。
  6. 向下滚动到“标识”字段,然后从下拉列表中选择“本地系统”。
  7. 对于“预定义”选项,从下拉列表中选择“本地系统”,然后单击“确定”。
  8. 在左窗格中,展开“网站”文件夹。
  9. 右键单击防毒墙网络版,然后单击“管理网站”>“高级设置”。
  10. 对于“应用程序池”,请从下拉列表中选择“趋势”。如果获得继承覆盖,请选择“全部”,然后单击“确定”。
  11. 重新启动 IIS 管理服务。执行以下步骤。
    • 视窗 + R
    • 在“打开”字段中,键入“services.msc”,然后单击“确定”。
    • 查找并选择“IIS 管理服务”,然后单击位于左窗格中的“重新启动”链接。

有关参考,请查看以下链接 https://success.trendmicro.com/dcx/s/solution/1098768-cannot-read-configuration-file-appears-on-http-error-500-19-when-accessing-the-worry-free-busin?language=en_US

希望这对你有所帮助。当我遇到同样的问题时,第一个选项对我有帮助。

评论

0赞 Lex Li 10/30/2023
一般来说,“完全控制”是一个糟糕的选择。将应用程序池标识设置为“本地系统”是越杀越岭。
0赞 YurongDai 10/31/2023 #2

首先,确保将 ASP.NET Core 应用程序的应用程序池配置为在具有足够权限访问应用程序目录的帐户下运行。

打开 IIS 管理器 >> 选择站点使用的应用程序池 >> 单击右侧“操作”窗格中的“高级设置”>> 选中“进程模型”部分下的“标识”。默认情况下,它设置为“ApplicationPoolIdentity”,这应该是建议的设置。

然后,您需要向错误消息中指示的 Web.config 文件的IIS_IUSRS组授予读取权限。即使该位置没有配置文件,IIS_IUSRS组也至少需要对目录具有读取访问权限,以便可以检查该目录中的 web.config 文件。(ApplicationPoolIdentity 是 IIS_IUSRS 用户组的成员,它不是指用户,而是所有程序池默认标识用户的集合名称。

右键单击“D:\monitor22”文件夹,>>选择“属性”>>转到“安全”选项卡,>>单击“编辑”以调整权限>>添加至少具有“读取”和“执行”权限的IIS_IUSRS。

如果已手动将应用程序池标识更改为特定用户帐户,请确保该帐户对 web.config 文件所在的目录具有读取权限。

评论

0赞 А.Терентьев 10/31/2023
IIS_IUSRS(和所有其他用户)在“D:\monitor22”文件夹中拥有所有权限,
0赞 А.Терентьев 11/2/2023 #3

通过安装 .NET Core 托管捆绑包解决了该问题。

谢谢大家。