2013-07-08 6 views
17

Ich arbeite mit SignalR 1.1.2 Version und Windsor Castle in einer AspNet MVC 4 Anwendung . dass diese Fehlermeldung, da ich auf die neuere bewegt zeigt sich SignalR Version.Der angeforderte Leistungsindikator ist kein benutzerdefinierter Zähler, er muss als ReadOnly initialisiert werden. "On RouteTable.Routes.MapHubs();

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

in der Linie

RouteTable.Routes.MapHubs(); 

Dies ist die RegisterHubs Klasse

Mein Problem ist,
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(); 
    } 
} 

Ich habe bereits versucht, ein paar Dinge, die ich in Internet wie gefunden habe:

lodctr /R 
cd C:\Windows\Inf\.NETFramework 
lodctr corperfmonsymbols.ini 

Aber ich bin immer noch die gleiche Fehlermeldung. Irgendwelche Ideen?

Ich benutze dotnet Framework 4.5. Diese

ist die stacktrace

at System.Diagnostics.PerformanceCounter.InitializeImpl() 

Dank!

UPDATE Ich füge die von Drew angeforderten Screenshots hinzu. enter image description here

enter image description here

enter image description here

+0

Können Sie die gesamte Stack-Trace, nicht nur den untersten Eintrag bereitstellen? Das wird helfen zu identifizieren, wo in SignalR Dinge falsch laufen. –

+0

Das ist alles, nichts anderes. – polonskyg

+0

Das ist nicht wirklich möglich. Kannst du einen Screenshot von dem, was du gerade siehst, machen? Basierend auf dem, was Sie uns bisher gesagt haben, denke ich, dass Sie erste Ausnahmen sehen, während SignalR versucht, seine Leistungsindikatoren zu verbinden. Wenn Sie den SignalR-Quellcode auschecken, in dem die Leistungsindikatoren initialisiert werden, sehen Sie die vielen Gründe, warum die Initialisierung fehlschlagen könnte und wie SignalR diese korrekt behandelt. https://github.com/SignalR/SignalR/blob/master/src/Microsoft.AspNet.SignalR.Core/Infrastructure/PerformanceCounterManager.cs#L378 –

Antwort

21

auf den Informationen So basiert Sie zur Verfügung gestellt haben es ist klar, dass diese werden erste Chance Ausnahmen ausgelöst, wenn SignalR versucht, die Leistungsindikatoren zu erstellen, aber nicht über die Rechte dazu mit der Identität, unter der der Prozess läuft. Sie können diese Ausnahmen ignorieren, aber Sie erhalten offensichtlich keine Leistungsindikatordaten.

Wenn Sie die Leistungsindikatoren erstellen möchten, müssen Sie sicherstellen, dass die Identität Ihrer Anwendung zu der Gruppe Leistungsindikatorbenutzer gehört, wenn sie ausgeführt wird. Entweder das oder Sie müssen die Dienstprogrammanwendung verwenden, die in Microsoft ASP.NET SignalR Utilities NuGet package zur Verfügung gestellt wird, mit der Sie die Zähler Out-of-Band erstellen können. Nur das Paket installieren und den Befehl ausführen:

signalr ipc 
+2

Es hat funktioniert !! Ich hatte keine Ahnung von diesem Paket, vielen Dank Drew! – polonskyg

12

Drew Marsh's response, löste das Problem für mich.Hier sind weitere Details beschreibt, wie über das Ausführen des signalr Befehl gehen:


den Paket-Manager verwenden, um SignalR Utils zu installieren:

  1. In VS: Tools -> Bibliothek Package Manager -> Package Manager Console
  2. in der Befehlszeile ein:

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

  3. Ausführen der IDE als Administrator ausführen:

    PM>signalr ipc

Administrator Berechtigungen die Leistungsindikatoren Installationsbefehl ausführen (signalr ipc) zu tun benötigt werden - läuft ohne diesen Fehler so Ergebnisse zu tun :

Error: System.Security.SecurityException: Requested registry access is not allowed. at Microsoft.Win32.RegistryKey.OpenSubKey(String name, Boolean writable) at System.Diagnostics.PerformanceCounterLib.CreateRegistryEntry(String categoryName, PerformanceCounterCategoryType categoryType, CounterCreationDataCollec tion creationData, Boolean& iniRegistered) at System.Diagnostics.PerformanceCounterLib.RegisterCategory(String category Name, PerformanceCounterCategoryType categoryType, String categoryHelp, Counter CreationDataCollection creationData) at System.Diagnostics.PerformanceCounterCategory.Create(String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) at 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 
+0

"Der Begriff 'Signal' wird nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt." nach der erfolgreichen Installation des Pakets. – UserControl

+0

@UserControl Es scheint, dass beim Installieren des Signals ein Problem aufgetreten ist. Was war das Ergebnis des Befehls 'Install-Package'? Vielleicht möchten Sie sich einige der hier dokumentierten Fälle in Bezug auf die Paketinstallationsoptionen ansehen: http://stackoverflow.com/questions/13056329/nuget-is-not-recognized-but-other-nuget-commands-working – CJBS

+0

Das Paket wurde erfolgreich installiert. Aus irgendeinem Grund konnte IDE den Befehl nicht finden. Ich musste sein Standortverzeichnis finden und von dort 'signor ipc' starten. – UserControl

2

Bitte beachten Sie, dass, wenn Sie die (richtige) Beratung oben erwähnt, und rufen ‚signalr ipc‘ folgen signalR die benutzerdefinierten Zähler zu installieren, yo Ihre Anwendung kann unerklärlicherweise nicht mehr funktionieren, wenn sie mit dem Debugger ausgeführt wird. Das Problem ist ein Fehler in der Art und Weise, wie die CLR CultureInfo bei der Initialisierung behandelt. Das Problem besteht zumindest in SignalR 2.2.0. Die vollständige Erklärung, und ein paar Problemumgehungen werden hier diskutiert: https://github.com/SignalR/SignalR/issues/3414