【问题标题】:SignarlR Two Hubs must not share the same nameSignarlR 两个集线器不得同名
【发布时间】: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.Lazy1.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


【解决方案1】:

问题在于欧文。我们有 2 个应用程序。第一个是 WCF 服务器,第二个是 SignalR 服务。当我们先启动 SignalR 服务时,是没有问题的。我们就是这样解决了这个问题。我认为这些服务器之间存在交叉点。

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2020-12-22
    相关资源
    最近更新 更多