C# 以编程方式读取w3wp.Net性能计数器实例

C# 以编程方式读取w3wp.Net性能计数器实例,c#,.net,performancecounter,C#,.net,Performancecounter,使用性能工具查看.Net性能计数器时,我可以看到列出的web进程性能计数器(w3wp,w3wp#1): 但是,当我以管理员身份运行以下代码时: var instanceNames = new PerformanceCounterCategory(".NET CLR Memory") .GetInstanceNames() .OrderBy(x => x); foreach (var name in in

使用性能工具查看.Net性能计数器时,我可以看到列出的web进程性能计数器(w3wp,w3wp#1):

但是,当我以管理员身份运行以下代码时:

var instanceNames = new PerformanceCounterCategory(".NET CLR Memory")
                     .GetInstanceNames()
                     .OrderBy(x => x);

foreach (var name in instanceNames)
{
    Console.WriteLine(name);
}
这是我看到的输出:


请注意,w3wp计数器未列出。有人知道为什么会出现这种情况,以及我如何修复它吗?

解决方案是您必须以与您的网站相同的比特数运行应用程序。由于我的网站是64位的,我需要在64位模式下运行控制台应用程序。要执行此操作,请右键单击console应用程序项目,单击Build选项卡中的properties,取消选中“Preference 32-bit”框

另外,当您使用.NET CLR内存类别中的进程id计数器收集w3wp进程的进程id时,它的开头为零。要获取进程id,您必须初始化网站并确保至少发生一次垃圾回收。由于这是在我的测试代码中,我可以简单地调用
应用程序启动处理程序中的
GC.Collect