3 votes

Compteurs de performance - Erreur de création de la catégorie de performance

J'obtiens une erreur lorsque j'essaie de créer une nouvelle catégorie de performance à partir de mon application ASP.NET. Au départ, j'avais quelques problèmes liés au registre, mais ils ont été résolus en donnant à l'utilisateur des autorisations sur certaines clés de registre et en l'ajoutant aux groupes "Performance Log Users" et "Performance Monitor Users". Mais maintenant, je reçois une exception et je ne sais pas quoi essayer d'autre.

L'erreur se produit lorsque j'exécute cette ligne :

PerformanceCounterCategory.Create(testName, testDescription, PerformanceCounterCategoryType.Unknown, counters);

testName y testDescriptions sont des variables de type chaîne de caractères qui contiennent le nom et la description de la catégorie et les compteurs sont une CounterCreationDataCollection. avec 3 compteurs.

Voici la trace de la pile de l'exception :

at System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0, Boolean unregister) at System.Diagnostics.PerformanceCounterLib.RegisterCategory(String categoryName, PerformanceCounterCategoryType categoryType, String categoryHelp, CounterCreationDataCollection creationData) at System.Diagnostics.PerformanceCounterCategory.Create(String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) at CL.Libraries.PerformanceTestUtils.InitializeCounters(Liste`1 usedCounters, String testName, String testDescription) dans C:\CL.Libraries\PerformanceTestUtils.cs :ligne 104

Il semble que je ne puisse pas afficher une image, alors voici ce que j'obtiens :

" UnauthorizedAccessException a été attrapé :

Impossible de créer ou de supprimer la catégorie de performance ' C:\TEMP\tmpD5E8.tmp ' car l'accès est refusé. "

La clé de catégorie est créée dans le registre. Le fichier mentionné ci-dessus est créé puis supprimé. J'ai donné à l'utilisateur un accès explicite au dossier Temp mais cela n'a pas aidé non plus.

Toute aide est la bienvenue.

4voto

HatSoft Points 7007

Votre code s'exécute sans privilèges d'administration et vous avez tenté de lire un compteur de performance.

Vous avez besoin de privilèges administratifs

Le message ci-dessus est extrait de MSDN http://msdn.microsoft.com/en-us/library/sb32hxtc.aspx

1voto

Karell Ste-Marie Points 537

HatSoft a tout à fait raison, vous devez disposer d'un accès administrateur pour créer des compteurs de performance - ce que vous ne devez généralement faire qu'une seule fois pour créer les compteurs. Une fois qu'ils sont créés, vous pouvez facilement instancier un compteur de performance par son nom, puis l'utiliser.

Nous plaçons généralement (après le développement d'une application) cette étape du processus dans la procédure d'installation - une fois configurée, l'application peut utiliser les compteurs à volonté.

J'ai un projet sur GitHub qui montre l'utilisation de base des compteurs de performance, il devrait vous aider à démarrer : https://github.com/stemarie/Karell.PerfCounters Vous devrez exécuter VS en tant qu'administrateur (clic droit, exécuter en tant qu'administrateur) pour que le test unitaire fonctionne correctement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X