在.Net Core中是否有任何nuget程序包或帮助程序来控制自定义性能计数器?我正在使用System.Diagnostics.PerformanceCounter程序包。
Visual Studio具有PerfWatson2(开发人员分析工具)扩展,该扩展在调试时运行,因此我可以更改计数器值。
但是,如果我将该代码作为服务安装在该计算机上并启动,则性能计数器值不会更改(始终为零)。服务用户已添加到“性能监视器用户”。
如果我将服务用户添加到“管理员”组中。然后性能计数器开始工作。
也许“性能监视器用户”组不能与.Net Core一起使用?由于性能计数器,我不想以管理员权限运行服务。
尝试过Microsoft.Windows.Compatibility nuget包,但仍然没有运气。 https://blogs.msdn.microsoft.com/dotnet/2017/11/16/announcing-the-windows-compatibility-pack-for-net-core/
答案 0 :(得分:1)
不幸的是,移植 System.Diagnostics.PerformanceCounter nuget 包的人删除了为性能计数器设置对内存映射文件的正确权限的行。如果您查看 SharedPerformanceCounter.Initialize,原始行“sECURITY_ATTRIBUTES.lpSecurityDescriptor = pSecurityDescriptor;”已在端口中删除。
答案 1 :(得分:1)
此问题已解决 - a fix 已合并到 https://github.com/dotnet/runtime。