SignarlR 两个集线器不得共享相同的名称
SignarlR Two Hubs must not share the same name
我们正在开发一个以 SigalR 库为核心的服务器应用程序。
当我尝试获取当前服务器上下文时,出现以下错误。有谁知道这个错误的原因吗?谢谢。
1) 它不是 MVC 应用程序,它是控制台应用程序。
2) 我们不使用 App_Start 或 App_Code 文件夹。
控制台应用程序内部的启动 class。:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
这是我的构造函数,它位于 class 库中。服务器自行启动。
public ServerBase()
{
serverURI = ConfigurationManager.AppSettings["ServerURI"];
StartServer();
serverContext = GlobalHost.ConnectionManager.GetHubContext<ServerBase>();
}
错误消息:
Two Hubs must not share the same name.
'Core.MessageTransmitter.ServerBase, Core.MessageTransmitter,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and
'Core.MessageTransmitter.ServerBase, Core.MessageTransmitter,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' both share the
name 'ServerBase'.
堆栈跟踪:
at
Microsoft.AspNet.SignalR.Hubs.ReflectedHubDescriptorProvider.BuildHubsCache()
at System.Lazy1.CreateValue() at System.Lazy
1.LazyInitValue()
at System.Lazy1.get_Value() at
Microsoft.AspNet.SignalR.Hubs.ReflectedHubDescriptorProvider.TryGetHub(String
hubName, HubDescriptor& descriptor) at
Microsoft.AspNet.SignalR.Hubs.DefaultHubManager.<>c__DisplayClass1.<GetHub>b__0(IHubDescriptorProvider
p) at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable
1
source, Func`2 predicate) at
Microsoft.AspNet.SignalR.Hubs.DefaultHubManager.GetHub(String hubName)
at
Microsoft.AspNet.SignalR.Hubs.HubManagerExtensions.EnsureHub(IHubManager
hubManager, String hubName, IPerformanceCounter[] counters) at
Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext(String
hubName) at
Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContextT
at Core.MessageTransmitter.ServerBase..ctor() in
C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line
28 at Core.MessageTransmitter.ServerBase..ctor(Logger logger) in
C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line
30 at Core.ContextManager.ServerContext.Initialize(String name,
Type messageBroker, String serviceAddress, String metaDataAddress) in
C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.Context\ServerContext.cs:line
22 at CallSite.Target(Closure , CallSite , ServerContext , String ,
Type , Object , Object ) at
System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid5[T0,T1,T2,T3,T4](CallSite
site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) at
MenuBoard.AppHostConsole.Program.Main(String[] args) in
C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.MenuBoard\MenuBoard.AppHostConsole\Program.cs:line
29
问题出在欧文身上。我们有 2 个应用程序。第一个是 WCF 服务器,第二个是 SignalR 服务。当我们先启动SignalR服务时,是没有问题的。我们就这样解决了这个问题。我认为这些服务器之间有一个交点。
我们正在开发一个以 SigalR 库为核心的服务器应用程序。 当我尝试获取当前服务器上下文时,出现以下错误。有谁知道这个错误的原因吗?谢谢。
1) 它不是 MVC 应用程序,它是控制台应用程序。
2) 我们不使用 App_Start 或 App_Code 文件夹。
控制台应用程序内部的启动 class。:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
这是我的构造函数,它位于 class 库中。服务器自行启动。
public ServerBase()
{
serverURI = ConfigurationManager.AppSettings["ServerURI"];
StartServer();
serverContext = GlobalHost.ConnectionManager.GetHubContext<ServerBase>();
}
错误消息:
Two Hubs must not share the same name. 'Core.MessageTransmitter.ServerBase, Core.MessageTransmitter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'Core.MessageTransmitter.ServerBase, Core.MessageTransmitter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' both share the name 'ServerBase'.
堆栈跟踪:
at Microsoft.AspNet.SignalR.Hubs.ReflectedHubDescriptorProvider.BuildHubsCache() at System.Lazy
1.CreateValue() at System.Lazy
1.LazyInitValue()
at System.Lazy1.get_Value() at Microsoft.AspNet.SignalR.Hubs.ReflectedHubDescriptorProvider.TryGetHub(String hubName, HubDescriptor& descriptor) at Microsoft.AspNet.SignalR.Hubs.DefaultHubManager.<>c__DisplayClass1.<GetHub>b__0(IHubDescriptorProvider p) at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable
1 source, Func`2 predicate) at Microsoft.AspNet.SignalR.Hubs.DefaultHubManager.GetHub(String hubName) at Microsoft.AspNet.SignalR.Hubs.HubManagerExtensions.EnsureHub(IHubManager hubManager, String hubName, IPerformanceCounter[] counters) at Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext(String hubName) at Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContextT at Core.MessageTransmitter.ServerBase..ctor() in C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line 28 at Core.MessageTransmitter.ServerBase..ctor(Logger logger) in C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line 30 at Core.ContextManager.ServerContext.Initialize(String name, Type messageBroker, String serviceAddress, String metaDataAddress) in C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.Context\ServerContext.cs:line 22 at CallSite.Target(Closure , CallSite , ServerContext , String , Type , Object , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid5[T0,T1,T2,T3,T4](CallSite site, T0 arg0, T1 arg1, T2 arg2, T3 arg3, T4 arg4) at MenuBoard.AppHostConsole.Program.Main(String[] args) in C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.MenuBoard\MenuBoard.AppHostConsole\Program.cs:line 29
问题出在欧文身上。我们有 2 个应用程序。第一个是 WCF 服务器,第二个是 SignalR 服务。当我们先启动SignalR服务时,是没有问题的。我们就这样解决了这个问题。我认为这些服务器之间有一个交点。