Ich führe eine .net-Anwendung in einem Windows-Docker-Container aus. Wenn meine Anwendung versucht, mit diesem Code perf Zähler zu erstellen:Windows Perf-Indikatoren auf Docker-Containern: System.InvalidOperationException: Kategorie existiert nicht
_counter = new PerformanceCounter(categoryName, counterName, InstanceName, true);
//My categoryname is Processor , CounterName is % Processor Time & instancename is _Total.
Ich erhalte diese Ausnahme:
Unbehandelte Ausnahme: System.InvalidOperationException: Kategorie gibt es nicht. bei System.Diagnostics.PerformanceCounterLib.CounterExists (String-Maschine, String Kategorie, String-Zähler) bei System.Diagnostics.PerformanceCounter.InitializeImpl() bei System.Diagnostics.PerformanceCounter..ctor (String category, String counter, String instanceName, Boolean readonly)
Dies ist das Basisbild meines Behälter: https://hub.docker.com/r/microsoft/dotnet-framework/
es hat Windows Server Core als Teil davon.
Schätzen Sie jede Hilfe bei der Behebung dieses Problems. Ich bin mir nicht sicher, ob dies nur einige Windows-Einstellungen sind, die ich hier ändern muss, oder ist es wegen des Docker & Windows oder mein Code nicht in der Lage, auf die Kategorien der Leistungsindikatoren zuzugreifen.
Es funktioniert einwandfrei, wenn ich es in meiner lokalen Maschine anstelle eines Containers laufen lasse.
ich einige Dinge herausgefunden: 1. Es bedeutet tatsächlich, dass die Kategorie Prozessor in meinem O aus irgendeinem Grunde nicht vorhanden ist. Als ich versuchte, alle Leistungskategorien nach diesem Code aufzulisten: PerformanceCounterCategory [] categories = PerformanceCounterCategory.GetCategories(); foreach (Kategorie "PerformanceCounterCategory" in den Kategorien) { Console.WriteLine ("Kategoriename: {0}", category.CategoryName); } Es gab keine Kategorie namens Prozessor. Warum fehlt es in Windows Server 2016? – ashok