Le compteur de performances demandé n'est pas un compteur personnalisé, il doit être initialisé en lecture seule."on RouteTable.Route.MapHubs();

je travaille avec la version 1.1.2 de SignalR et le Château de Windsor dans une application AspNet MVC 4. Mon problème est que ce message d'erreur apparaît depuis que je suis passé à la nouvelle version de SignalR.

"The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly."

à la ligne

    RouteTable.Routes.MapHubs();

C'est la classe RegisterHubs

public static class RegisterHubs
{
    public static void Start()
    {
        var signalrDependencyContainer = new WindsorContainer().Install(new HubsInstaller());
        var signalrDependency = new SignalrDependencyResolver(signalrDependencyContainer.Kernel);
        GlobalHost.DependencyResolver = signalrDependency;
        RouteTable.Routes.MapHubs();
    }
}

j'ai déjà essayé quelques choses que j'ai trouvées sur internet comme:

lodctr /R
cd C:WindowsInf.NETFramework
lodctr corperfmonsymbols.ini

mais je reçois toujours le même message d'erreur. Des idées?

j'utilise dotnet framework 4.5.

C'est le stacktrace

at System.Diagnostics.PerformanceCounter.InitializeImpl()

Merci!

UPDATE J'Ajoute les screenshots demandés par Drew. enter image description here

enter image description here

enter image description here

17
demandé sur polonskyg 2013-07-08 22:39:57

4 réponses

donc sur la base des informations que vous avez fournies, il est clair que ce sont des exceptions de première chance qui sont lancées lorsque SignalR tente de créer les compteurs de performances mais n'a pas les droits de le faire avec l'identité sous laquelle le processus est exécuté. Vous pouvez ignorer ces exceptions en toute sécurité, mais vous n'obtiendrez évidemment pas de données de performance counter.

Si vous souhaitez créer les compteurs de performance, vous devez vous assurer de l'identité de votre application appartient à la Performance Counter Users group quand il est en cours d'exécution. Soit ça, ou vous devez utiliser l'utilitaire fourni dans le Microsoft ASP.NET SignalR Utilities NuGet package qui permet de créer les compteurs de bande. Installez simplement le paquet et lancez la commande:

signalr ipc
23
répondu Drew Marsh 2013-07-10 03:31:41

la réponse de Drew Marsh, a résolu le problème pour moi, trop. Voici plus de détails sur la façon d'exécuter le signalr commande:


utilisez le gestionnaire de paquets pour installer SignalR Utils:

  1. Dans VS: Outils -> Gestionnaire de paquets de Bibliothèque -> Gestionnaire de paquets Console
  2. à Partir de la ligne de commande, tapez:

    PM> Install-Package Microsoft.AspNet.SignalR.Utils

  3. exécuter L'IDE comme un Administrateur, exécutez:

    PM> signalr ipc

les permissions de L'administrateur sont nécessaires pour exécuter la commande d'installation des compteurs de performances (signalr ipc) - exécuter sans le faire entraîne cette erreur:

Erreur: Système.Sécurité.SecurityException: demande d'accès au registre n'est pas autorisé. chez Microsoft.Win32.RegistryKey.OpenSubKey( nom de chaîne, booléen en écriture)) à Système.Diagnostic.PerformanceCounterLib.CreateRegistryEntry (String categoryName, PerformanceCounterCategoryType categoryType, CounterCreationDataCollec creationData, Boolean& iniRegistered) au Système.Diagnostic.PerformanceCounterLib.RegisterCategory (String catégorie Nom, PerformanceCounterCategoryType categoryType, String category help, Counter Creationdatatacollection creationData) au Système.Diagnostic.PerformanceCounterCategory.Créer (String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) chez Microsoft.AspNet.SignalR.Utils.PerformanceCounterInstaller.InstallCounters ()

   at Microsoft.AspNet.SignalR.Utils.InstallPerformanceCountersCommand.Execute(
String[] args)
   at Microsoft.AspNet.SignalR.Utils.Program.Main(String[] args)
The Zone of the assembly that failed was:
MyComputer
14
répondu CJBS 2017-05-23 12:02:37

veuillez noter que si vous suivez les conseils (corrects) mentionnés ci-dessus et que vous invoquez "signalr ipc" pour installer les compteurs personnalisés de SignalR, votre application pourrait inexplicablement arrêter de fonctionner complètement lors de l'exécution avec le débogueur. Il s'agit d'un bug dans la façon dont le CLR traite CultureInfo lors de l'initialisation. Le problème existe au moins en SignalR 2.2.0. L'explication complète, et un couple de solutions de contournement sont discutés ici: https://github.com/SignalR/SignalR/issues/3414

2
répondu Steve Faiwiszewski 2016-06-29 02:26:24

Résolu le problème. Dans mon serveur de test ou de production, Je n'ai pas L'IDE comme Visual Studio qui y est installé. Ainsi que je l'ai coincé avec la même erreur. Enfin j'ai simplement fait les étapes suivantes:

s'il vous Plaît suivez les étapes ci-dessous le serveur que VS est installé

  • Dans VS: Outils -> Gestionnaire de Package NuGet -> Gestionnaire de paquets de la Console À partir de la ligne de commande, tapez:

  • PM> Install-Package Microsoft.AspNet.SignalR.Utils

  • allez à paquets - > Microsoft.AspNet.SignalR.Utils.2.2.3 -> Outils

  • Copier signalr.exe

s'il vous Plaît suivez les étapes ci-dessous le test ou le serveur de production

  • coller signalr.exe sous bin - > déboguer le dossier et copier le chemin
  • ouvrir L'invite de commande en mode Administrateur et changer le répertoire vers le chemin copié
  • tapez et lancez la commande signalr.exe ipc

après avoir exécuté la commande ci-dessus avec succès, j'ai lancé l'application qui a fonctionné correctement. J'ai juste posté ceci pour les autres s'ils en ont besoin sur l'environnement de test.

0
répondu Vignesh Raagav 2018-04-21 12:15:00