pol*_*kyg 17 c# asp.net signalr signalr-hub
我在AspNet MVC 4应用程序中使用SignalR 1.1.2版本和Windsor Castle.我的问题是,自从我转移到较新的SignalR版本后,此错误消息显示出来.
"The requested Performance Counter is not a custom counter, it has to be initialized as ReadOnly."
Run Code Online (Sandbox Code Playgroud)
在线
RouteTable.Routes.MapHubs();
Run Code Online (Sandbox Code Playgroud)
这是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();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一些我在互联网上找到的东西,比如:
lodctr /R
cd C:\Windows\Inf\.NETFramework
lodctr corperfmonsymbols.ini
Run Code Online (Sandbox Code Playgroud)
但我仍然收到相同的错误消息.有任何想法吗?
我正在使用dotnet framework 4.5.
这是堆栈跟踪
at System.Diagnostics.PerformanceCounter.InitializeImpl()
Run Code Online (Sandbox Code Playgroud)
谢谢!
更新
我正在添加Drew请求的屏幕截图.



Dre*_*rsh 24
因此,基于您提供的信息,很明显,这些是在SignalR尝试创建性能计数器时抛出的第一次机会异常,但是没有权利使用运行该进程的标识来执行此操作.您可以安全地忽略这些异常,但显然您无法获得性能计数器数据.
如果要创建性能计数器,则需要确保应用程序的标识在运行时属于Performance Counter Users组.或者您需要使用Microsoft ASP.NET SignalR Utilities NuGet包中提供的实用程序应用程序,该程序包允许您在带外创建计数器.只需安装包并运行命令:
signalr ipc
Run Code Online (Sandbox Code Playgroud)
CJB*_*JBS 14
Drew Marsh的回答也解决了我的问题.以下是描述如何运行signalr命令的其他详细信息:
使用软件包管理器安装SignalR Utils:
从命令行键入:
PM> Install-Package Microsoft.AspNet.SignalR.Utils
以管理员身份运行IDE,运行:
PM> signalr ipc
需要管理员权限才能运行性能计数器安装命令(signalr ipc) - 运行时不执行此操作会导致此错误:
错误:System.Security.SecurityException:不允许请求的注册表访问.在System.Diagnostics.PerformanceCounterLib.RegisterCategory的System.Diagnostics.PerformanceCounterLib.CreateRegistryEntry(String categoryName,PerformanceCounterCategoryType categoryType,CounterCreationDataCollec tion creationData,Boolean&iniRegistered)中的Microsoft.Win32.RegistryKey.OpenSubKey(String name,Boolean writable)(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()
Run Code Online (Sandbox Code Playgroud)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
| 归档时间: |
|
| 查看次数: |
17334 次 |
| 最近记录: |