gpt4 book ai didi

c# - App_Code 中的 SignalR Hub 导致 "Two Hubs must not share the same name"错误

转载 作者:行者123 更新时间:2023-11-30 23:29:10 31 4
gpt4 key购买 nike

在 ASP.Net MVC 5 项目的根目录中创建 SignalR 2 Hub 类工作得很好。您可以访问 ~/signalr/hubs url 并返回代理。您还可以将该类放在名为 Hubs 或类似名称的文件夹中,它仍然可以正常运行。一旦将类放入 App_Code 特殊的 ASP.Net 文件夹中,就会出现以下错误:

Exception Details: System.InvalidOperationException: Two Hubs must not share the same name. 'SignalR_MVC.EchoHub, SignalRQuickTest, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' and 'SignalR_MVC.EchoHub, App_Code.gjrzytie, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' both share the name 'echo'.

附带说明一下,将类 Build ActionCompile 设置为 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 的人能够阐明这种情况,并可能分享他们的“最佳实践”建议。

最佳答案

事实证明,如果您在 WebForms 以外的任何地方使用 App_Code 文件夹(甚至仅用于 Web 表单),那么您就太顽皮了,因为这是您可以简单地添加代码页的地方(即使在实时服务器上) ) 并且它们将在运行时编译。

通常,您永远不应该将 App_Code 文件夹用于实际的系统代码,它应该只用于您的 Web 表单。

我们创建了一个名为 _Code 的单独文件夹,现在将所有项目的代码都放在那里,并且禁止使用 App_Code,甚至将其添加到我们的新员工工具包中(因为我们不再使用 WebForms)以确保没有人得到再次被困在那里。

希望有一天能帮助其他迷失的灵魂。

关于c# - App_Code 中的 SignalR Hub 导致 "Two Hubs must not share the same name"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626029/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com