【发布时间】:2017-10-05 07:54:40
【问题描述】:
我们正在开发一个以 SigalR 库为核心的服务器应用程序。 当我尝试获取当前服务器上下文时,出现以下错误。有没有人知道这个错误的原因?谢谢。
1) 它不是 MVC 应用程序,而是控制台应用程序。
2) 我们不使用 App_Start 或 App_Code 文件夹。
控制台应用内的启动类:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
这是我在类库中的构造函数。服务器自行启动。
public ServerBase()
{
serverURI = ConfigurationManager.AppSettings["ServerURI"];
StartServer();
serverContext = GlobalHost.ConnectionManager.GetHubContext<ServerBase>();
}
错误消息:
两个集线器不得使用相同的名称。 'Core.MessageTransmitter.ServerBase,Core.MessageTransmitter, 版本=1.0.0.0,文化=中性,PublicKeyToken=null' 和 'Core.MessageTransmitter.ServerBase,Core.MessageTransmitter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 都共享 名称“ServerBase”。
堆栈跟踪:
在 Microsoft.AspNet.SignalR.Hubs.ReflectedHubDescriptorProvider.BuildHubsCache() 在 System.Lazy
1.CreateValue() at System.Lazy1.LazyInitValue()
在 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](IEnumerable1 源,Func`2 谓词)在 Microsoft.AspNet.SignalR.Hubs.DefaultHubManager.GetHub(字符串 hubName) 在 Microsoft.AspNet.SignalR.Hubs.HubManagerExtensions.EnsureHub(IHubManager hubManager,字符串 hubName,IPerformanceCounter[] 计数器)在 Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContext(字符串 集线器名称)在 Microsoft.AspNet.SignalR.Infrastructure.ConnectionManager.GetHubContextT 在 Core.MessageTransmitter.ServerBase..ctor() 中 C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line 28 在 Core.MessageTransmitter.ServerBase..ctor(Logger logger) 中 C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.MessageTransmitter\ServerBase.cs:line 30 在 Core.ContextManager.ServerContext.Initialize(字符串名称, 类型 messageBroker, String serviceAddress, String metaDataAddress) in C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.Core\Core.Context\ServerContext.cs:line 22 在 CallSite.Target(Closure , CallSite , ServerContext , String , 类型,对象,对象)在 System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid5[T0,T1,T2,T3,T4](CallSite 站点,T0 arg0,T1 arg1,T2 arg2,T3 arg3,T4 arg4)在 MenuBoard.AppHostConsole.Program.Main(String[] args) 在 C:\ReklamUssuProjects\MenuBoard-DevBranch\ReklamUssu.MenuBoard\MenuBoard.AppHostConsole\Program.cs:line 29
【问题讨论】:
-
您使用的是什么版本的 SignalR?
Microsoft.AspNet.SignalR告诉我您正在尝试在 Asp.NET Core 上使用 SignalR 2.2.2 或类似版本,这是不受支持的场景。用于 Asp.NET Core 的 SignalR 版本为blogs.msdn.microsoft.com/webdev/2017/09/14/…(注意目前最新版本为 alpha1) -
版本为:2.1.0
-
我想我被
signalr-core标签(我删除了)和第一句话误导了:'我们正在开发一个使用 SigalR 库作为核心的服务器应用程序'。两者都让我觉得你在 ASP.NET Core 上运行 SignalR for ASP.NET(这不是受支持的场景) -
对此感到抱歉:)
标签: c# signalr signalr-hub