Подтвердить что ты не робот

Запрошенный счетчик производительности не является настраиваемым счетчиком, его нужно инициализировать как 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

4b9b3361

Ответ 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