我在Windows Docker容器中運行.net應用程序。當我的應用程序試圖創建使用此代碼PERF的計數器:Docker容器上的Windows Perf計數器:System.InvalidOperationException:類別不存在
_counter = new PerformanceCounter(categoryName, counterName, InstanceName, true);
//My categoryname is Processor , CounterName is % Processor Time & instancename is _Total.
我得到這個異常:
未處理的異常:System.InvalidOperationException:類別不 不存在。在在 System.Diagnostics.PerformanceCounter.InitializeImpl()在 System.Diagnostics.PerformanceCounter..ctor(字符串類別名稱, 字符串counterName,字符串 System.Diagnostics.PerformanceCounterLib.CounterExists(字符串機, 字符串類別,字符串計數器)實例名,布爾只讀)
這是我的容器底部圖像:https://hub.docker.com/r/microsoft/dotnet-framework/
它的Windows服務器核心作爲它的一部分。
感謝任何幫助解決此問題。我不確定這是否只是一些窗口設置,我需要在這裏更改,或者是因爲docker &窗口或我的代碼無法訪問perf計數器的類別。
它運行得很好,當我在本地機器而不是容器中運行它時。
我想通了幾件事情: 1.這實際上意味着類別處理器並不存在於我的操作系統的某些原因。當我試圖通過此代碼列出所有性能類別時: PerformanceCounterCategory [] categories = PerformanceCounterCategory.GetCategories(); foreach(類別中的PerformanceCounterCategory類別) Console.WriteLine(「Category name:{0}」,category.CategoryName); } 沒有稱爲處理器的類別。爲什麼在Windows Server 2016中缺少它? – ashok