我正在尝试编写一些c#代码,如果它不存在则编写一个新的性能计数器类别,然后添加一个特定的计数器。当我从Visual Studio开发服务器运行此代码时,一切正常。当我将它部署到IIS并尝试它时,我得到权限错误。我正在运行Windows 7并使用IIS 7.5。
到目前为止我做了些什么,其中一些是出于绝望而做的:
我知道这些步骤部分有效,因为我现在能够检查某个类别是否存在(ASPNET用户甚至无法做到)。我可以检查一个类别是否存在,我只是不能添加一个新类别。
我得到的错误是
Cannot create or delete the Performance Category 'C:\Windows\TEMP\tmp1AA8.tmp' because access is denied.
添加性能计数器类别的代码如下所示:
if (!PerformanceCounterCategory.Exists("APIService"))
{
CounterCreationDataCollection counters = new CounterCreationDataCollection();
CounterCreationData counter = new CounterCreationData();
counter.CounterName = "# of operations executed";
counter.CounterHelp = "Operations executed";
counter.CounterType = PerformanceCounterType.RateOfCountsPerSecond32;
counters.Add(counter);
PerformanceCounterCategory.Create("APIService", "Api Counter", PerformanceCounterCategoryType.SingleInstance, counters); // This code blows up
}
我搜索过高低,无法找到有同样问题的人。我甚至试过给每个人完全控制c:\ windows \ temp。知道我在这里可能缺少什么吗?
答案 0 :(得分:0)
我想我找到了解决方案(或者更确切地说是别人做了,但我可以在今天早上找到该论坛的链接)。我没有将App Pool设置为以管理员身份运行,而是将其切换到本地系统用户。这似乎已经解决了所有问题,因为用户有足够的权限来编写性能指标和其他需要完成的工作。