gpt4 book ai didi

c# - 尽管 PerformanceCounter 类别存在,但它并不存在

转载 作者:可可西里 更新时间:2023-11-01 10:44:37 29 4
gpt4 key购买 nike

我的 IIS 计算机上运行着一个 Azure Web 角色和一个单独的 Windows 服务。 Web 角色创建一个自定义性能计数器类别和两个计数器。我正在尝试从 Windows 服务读取性能计数器。即使 PerformanceCounterCategory.Exists(categoryName) 返回 trueGetCounters 方法也会抛出异常,表示 Category 不存在(请参阅更新)。

if (PerformanceCounterCategory.Exists(categoryName))
{
try
{
// Get the existing category and counters
PerformanceCounterCategory existingCategory = new PerformanceCounterCategory(categoryName);
counters = existingCategory.GetCounters();
}
catch (Exception e)
{
Debug.WriteLine("Failed to read the performance category {0}. Exception: {1}", categoryName, e.Message);
}
}

Windows 服务作为本地系统服务运行,因此我认为它应该具有特权。事实上,我可以通过 Visual Studio 的服务器资源管理器查看性能类别和计数器。

如果类别不存在,我应该预期 PerformanceCounterCategory.Exists(categoryName) 首先会失败,对吧?

更新

  • 我看到 GetCounters 方法抛出 InvalidOperationException 并带有消息 无法读取类别索引:{此处有索引}。
  • Similar issue发布在 msdn 论坛上
  • 相同的进程能够很好地读取计数器。

最佳答案

我们遇到了同样的问题。实际 WindowsInstance 中的整个 PerformanceCounters 出了问题。我们通过以下 CMD 命令解决了这个问题(以管理员身份运行):

lodctr /R

它从某个备份存储重建了 PerformanceCounters。

如果它不能解决您的问题,您可以尝试此操作(再次使用管理员权限执行 CMD):

Winmgmt /resyncperf 
Net stop winmgmt /y
Net start winmgmt

来源:https://thwack.solarwinds.com/thread/43987

关于c# - 尽管 PerformanceCounter 类别存在,但它并不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31349050/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com