"访问性能计数器时,访问注册表项'全局'被拒绝"

Cha*_*ian 37 asp.net iis performancecounter iis-7.5

我试图从我的ASP.NET应用程序中读取一些性能计数器.当我这样做时,我收到错误"访问注册表项'全局'被拒绝."

我已尝试按照此处此处的说明使用用户IIS AppPool\DefaultAppPool,这是我的应用程序池配置使用的标识:

App Pool配置的屏幕截图

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

在此输入图像描述

添加用户后,我重新启动了计算机.但我仍然得到错误.

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

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

Cha*_*ian 64

我找到了解决方案.虽然互联网上的各种链接告诉您使用身份IIS APPPOOL\DefaultAppPool,但这不是完整的故事.只有在您将应用程序分配给名为"DefaultAppPool"的应用程序池时,这才有效.

ServerFault上的这个链接有答案.您必须使用应用池的名称.就我而言,应用程序池的名称是"暂存",所以正确的用户是IIS APPPOOL\staging.将此用户置于"性能监视器用户"组中可以解决我的问题.

  • 我注意到要添加的两件事:*什么都不做或者回收应用程序池不足以获取新权限,但也不需要重新启动计算机.但是,iisreset完成了这项工作.(在我的情况下是Windows 2012 Server).*如果您将应用程序池作为不同的标识运行,则只需将该标识添加到Performance Monitor Users组即可; 即你不需要添加特殊的IIS APPPOOL用户. (14认同)