【发布时间】:2016-02-25 11:29:40
【问题描述】:
在 ASP.Net MVC 5 项目的根目录中创建 SignalR 2 Hub 类非常有效。您可以访问 ~/signalr/hubs 网址并返回代理。您也可以将该类放在名为 Hubs 或类似的文件夹中,它仍然可以正常运行。只要将类放入 App_Code 特殊的 ASP.Net 文件夹,就会出现以下错误:
异常详细信息:System.InvalidOperationException:两个集线器不得共享相同的名称。 'SignalR_MVC.EchoHub, SignalRQuickTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 和 'SignalR_MVC.EchoHub, App_Code.gjrzytie, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'回声'。
附带说明,将 Build Action 类从 Compile 设置为 Content 会导致错误消失并且一切正常。我已经阅读了App_Code 文件夹上的所有文档,但它没有提到任何关于创建 2 个 dll 的内容(这就是这里发生的事情),尽管发布应用程序只会创建 1 个 dll,并且在部署到 IIS 时一切正常。
我发现了这个错误报告:Two Hubs must not share the same name,但此人从未跟进,他们关闭了该错误。我还发现了这个 SO 帖子An unhandled exception : Two Hubs must not share the same name,但虽然它看起来很相似,但据我所知并不相同。我找不到任何其他甚至模糊相似的东西,所以我希望知道 SignalR / App_Code 的人能够对这种情况有所了解,并可能分享他们的“最佳实践”建议。
【问题讨论】:
-
遇到了同样的问题,但情况更糟。我在.net 4 vs 2010中使用signalr 1.2.2。使用fiddler 6小时后发现错误,然后重现它。发生在 ReflectedHubDescriptorProvider 类中,第 44 行(BuildHubsCache 方法)。
-
感谢您的评论,已找到答案!让我知道这是否有帮助
标签: c# asp.net-mvc-5 signalr-hub