49

我正在尝试从我的 ASP.NET 应用程序中读取一些性能计数器。当我这样做时,我收到错误“拒绝访问注册表项‘全局’。”

我尝试按照此处此处的说明使用 user IIS AppPool\DefaultAppPool,这是我的应用程序池配置使用的身份:

App Pool 配置截图

我已将该用户添加到 Performance Monitor Users 组:

在此处输入图像描述

添加用户后,我重新启动了计算机。但我仍然收到错误消息。

我还尝试将用户 IUSR 和 NETWORK SERVICE 添加到性能监视器用户组,但这些也不起作用。出于绝望,我尝试将用户“Everyone”添加到 Performance Monitor Users 组,这确实有效。但我的目标是在生产中记录我的应用程序的统计信息,我不想将“每个人”添加到生产服务器上的该组中。

为了在不产生安全异常的情况下读取性能计数器,还需要发生什么?

4

2 回答 2

76

我找到了解决方案。尽管 Internet 上的各种链接告诉您使用身份IIS APPPOOL\DefaultAppPool,但这并不是全部。当您实际上将应用程序分配给名为“DefaultAppPool”的应用程序池时,这才有效。

ServerFault 的这个链接有答案。您必须使用您的应用程序池的名称。在我的例子中,应用程序池的名称是“staging”,所以正确的用户是IIS APPPOOL\staging. 将此用户放在性能监视器用户组中解决了我的问题。

于 2013-07-02T14:00:01.953 回答
1

在我的情况下,我将正确的应用程序池(我用于我的网站的那个)添加到性能用户和日志,但它仍然给我带来了问题。我所做的是

  • 停止我的应用程序池
  • 切换我的网站,使其使用 DefaultAppPool
  • 重新启动网站
  • 将网站切换回正确的应用程序池(已停止)
  • 启动应用程序池
  • 重新启动网站
于 2020-11-23T12:57:59.050 回答