当我尝试从ASP.NET应用程序创建新的性能类别时出现错误。最初我有一些与注册表相关的问题但是通过向用户授予对某些注册表项的一些权限并将其添加到“性能日志用户”和“性能监视器用户”组来解决它们。但现在我得到一个例外,我不知道还有什么可以尝试。
执行此行时发生错误:
PerformanceCounterCategory.Create(testName, testDescription, PerformanceCounterCategoryType.Unknown, counters);
testName
和testDescriptions
是字符串变量,包含类别的名称和描述,计数器是CounterCreationDataCollection
有3个柜台。
以下是异常的堆栈跟踪:
at System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0,布尔取消注册)at System.Diagnostics.PerformanceCounterLib.RegisterCategory(字符串 categoryName,PerformanceCounterCategoryType categoryType,String categoryHelp,CounterCreationDataCollection creationData)at System.Diagnostics.PerformanceCounterCategory.Create(字符串 categoryName,String categoryHelp,PerformanceCounterCategoryType categoryType,CounterCreationDataCollection counterData)at CL.Libraries.PerformanceTestUtils.InitializeCounters(List`1 usedCounters,String testName,String testDescription)in C:\ CL.Libraries \ PerformanceTestUtils.cs:第104行
似乎我无法发布图像所以这就是我得到的结果:
“发现了UnauthorizedAccessException:
无法创建或删除效果类别'C:\ TEMP \ tmpD5E8.tmp' 因为访问被拒绝。 “
类别键是在注册表中创建的。创建上面提到的文件然后删除。我为用户提供了对Temp文件夹的显式访问权限,但这也无济于事。
非常感谢任何帮助。
答案 0 :(得分:3)
您的代码正在执行而没有管理权限且具有 试图阅读性能计数器。
您需要管理权限
以上消息来自MSDN http://msdn.microsoft.com/en-us/library/sb32hxtc.aspx
答案 1 :(得分:0)
HatSoft完全正确,您需要管理员访问才能创建性能计数器 - 您通常只需执行一次即可创建计数器。创建完成后,您可以轻松地按名称实例化性能计数器,然后使用它。
我们通常(在开发应用程序之后)将此过程的这一步放在安装过程中 - 一旦设置,应用程序就可以随意使用计数器。
我在GitHub上有一个项目,它显示了性能计数器的基本用法,它应该可以帮助你入门: https://github.com/stemarie/Karell.PerfCounters 您需要以管理员身份运行VS(右键单击,以管理员身份运行),以便单元测试正常运行。