Запрошенный счетчик производительности не является настраиваемым счетчиком, его нужно инициализировать как ReadOnly. "На RouteTable.Routes.MapHubs();
Я работаю с версией SignalR 1.1.2 и Виндзорским замком в приложении AspNet MVC 4.
Моя проблема в том, что это сообщение об ошибке появляется с тех пор, как я перешел к новой версии SignalR.
"The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly."
в строке
RouteTable.Routes.MapHubs();
Это класс 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();
}
}
Я уже пробовал несколько вещей, которые я нашел в Интернете, например:
lodctr /R
cd C:\Windows\Inf\.NETFramework
lodctr corperfmonsymbols.ini
Но я все еще получаю то же сообщение об ошибке. Есть идеи?
Я использую dotnet framework 4.5.
Это stacktrace
at System.Diagnostics.PerformanceCounter.InitializeImpl()
Спасибо!
UPDATE
Я добавляю скриншоты, запрошенные Дрю.
![enter image description here]()
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Итак, на основе предоставленной вами информации ясно, что это первые случайные исключения, возникающие, когда SignalR пытается создать счетчики производительности, но не имеет прав на это с идентификацией, что процесс запущен под. Вы можете смело игнорировать эти исключения, но вы, очевидно, не получите данные счетчика производительности.
Если вы хотите создать счетчики производительности, вам нужно убедиться, что личность вашего приложения принадлежит группе пользователей счетчиков производительности при ее запуске. Либо это, либо вам нужно использовать служебное приложение, представленное в Microsoft ASP.NET SignalR Utilities NuGet package, который позволяет создавать счетчики вне диапазона, Просто установите пакет и запустите команду:
signalr ipc
Ответ 2
ответ Дрю Марша, решил проблему и для меня. Ниже приведены дополнительные сведения о том, как запустить команду signalr
:
Используйте диспетчер пакетов для установки SignalR Utils:
- В VS: Инструменты → Диспетчер пакетов библиотеки → Менеджер пакетов
Консоль
-
В командной строке введите:
PM > Install-Package Microsoft.AspNet.SignalR.Utils
-
Запуск IDE в качестве администратора, выполните:
PM > signalr ipc
Разрешения администратора необходимы для выполнения команды установки счетчиков производительности (signalr ipc
) - запуск без этого приводит к этой ошибке:
Ошибка: System.Security.SecurityException: запрошенный доступ к реестру не допускается. в Microsoft.Win32.RegistryKey.OpenSubKey(имя строки, Boolean writeable) в System.Diagnostics.PerformanceCounterLib.CreateRegistryEntry(String categoryName, PerformanceCounterCategoryType categoryType, CounterCreationDataCollec создание данныхData, Boolean & iniRegistered) в System.Diagnostics.PerformanceCounterLib.RegisterCategory(String категория Имя, PerformanceCounterCategoryType categoryType, String categoryHelp, Counter Создание CreationDataCollectionData) в System.Diagnostics.PerformanceCounterCategory.Create(String categoryName, String categoryHelp, PerformanceCounterCategoryType categoryType, CounterCreationDataCollection counterData) в 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
Ответ 3
Обратите внимание, что если вы следуете (правильному) совету, упомянутому выше, и вызываете "signalr ipc" для установки пользовательских счетчиков SignalR, ваше приложение может необъяснимо прекратить работу вообще при работе с отладчиком. Проблема связана с ошибкой в том, как CLR имеет дело с CultureInfo при инициализации. Проблема существует, по крайней мере, в SignalR 2.2.0.
Полное объяснение и пара обходных решений обсуждаются здесь: https://github.com/SignalR/SignalR/issues/3414