【问题标题】:'Hub' is an ambiguous reference“集线器”是一个模棱两可的参考
【发布时间】:2013-05-15 03:29:54
【问题描述】:

我在我的应用程序中使用这些库:

using SignalRDemo.Hubs;
using Microsoft.AspNet.SignalR.Hubs;
using System.Threading.Tasks;
using System.Web.Script.Serialization;

现在我必须实现IConnect, IDisconnect 接口。所以,我加了using SignalR.Hubs; 并在我的 ChatHub 类中添加了一个函数:

   public class ChatHub : Hub, IConnected, IDisconnect
     {
     public Task Connect()
            {
                //Call the joined method on all connected clients
                return Clients.joined(Context.ConnectionId);

            }
     }

客户端代码:

chatHub.joined = function (connectionId) {
                $('#connections').append('<li>Connect: ' + connectionId + '</li>');
            }

但是,当我构建解决方案时,它会显示错误。

   'Hub' is an ambiguous reference between 'Microsoft.AspNet.SignalR.Hub' and 'SignalR.Hubs.Hub' 

【问题讨论】:

    标签: javascript jquery signalr signalr-hub


    【解决方案1】:

    您的项目中可能有两个不同的 SignalR 程序集。最新版本使用 Microsoft.AspNet.SignalR 命名空间。检查您的程序集并删除以前的版本。

    否则你需要告诉编译器你想使用哪个命名空间。

    public class ChatHub : Microsoft.AspNet.SignalR.Hub
    

    编辑:

    halter74 指出IConnectedIDisconnect 接口已被删除。 OnConnectedOnDisconnectedOnReconnected 虚拟方法可以在 Hub 类中找到。

    【讨论】:

    • 使用最新版本的 SignalR (Microsoft.AspNet.SignalR.Hub),IConnected 和 IDisconnect 接口已被删除。但是,OnConnected、OnDisconnected 和 OnReconnected 是 Hub 类上的虚拟方法。
    【解决方案2】:

    这就是它所说的。在 Microsoft.AspNet.SignalRSignalR.Hubs.Hub 命名空间中定义的集线器类,而您在代码中都在 using 中,因此编译器不知道该使用哪一个;您必须明确定义适当的类:

    public class ChatHub : SignalR.Hubs.Hub, IConnected, IDisconnect
    

    using Hub = SignalR.Hubs.Hub;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-02
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多