我在获取权限以允许我的应用程序(在 IIS7 AppPool 中运行)删除/添加性能计数器类别及其数据时遇到问题。我有这样的代码:
if (!PerformanceCounterCategory.Exists(CategoryName))
{
var counters = new CounterCreationDataCollection();
var opsIn = new CounterCreationData
{
CounterName = "Test Counter",
CounterHelp = "Test Counter Help",
CounterType = PerformanceCounterType.RateOfCountsPerSecond32
};
counters.Add(opsIn);
PerformanceCounterCategory.Create(CategoryName, "Service Layer Instrumentation",
PerformanceCounterCategoryType.SingleInstance,
counters);
}
目的是在尚未创建它们的系统上创建性能计数器,因此我不受静态安装程序行为的约束(我希望能够轻松更改计数器)。到目前为止,当它起作用时,它运行良好。
当我以管理员身份在可执行文件中运行此代码时,没有问题。但是,当我在 IIS 服务中运行它时,AppPool 没有执行类别更改的正确权限。我知道一个事实是可以让 WMI 权限正常工作,因为我之前做过一次测试服务器的演示......但那是几个月前,我很累,而且是最后一分钟。整个事情一片模糊。现在我无法重现我的结果,因为我要回去尝试正式化安装过程以包括必要的安全更改。
谷歌只是有一点帮助,我清楚地记得在事情起作用之前必须将几页的指令拼凑在一起。是否有人建议为IIS 应用程序池启用性能计数器类别编辑的完整说明?