从WebAPI控制器调用SignalR集线器

时间:2014-01-10 14:24:10

标签: asp.net-web-api signalr asp.net-mvc-5

我正在使用MVC 5,Signal R 2.0.1和WebAPI 2,并且有一个名为ExportHub的简单集线器

public class ExportHub : Hub
{
    public void Send(string name, string message)
    {
        // Call the addNewMessageToPage method to update clients.
        Clients.All.addNewMessageToPage(name, message);
    }
}

我试图从WebAPI调用它,以便可以更新UI。

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ExportHub>();

但是在hubContext中我没有看到对Send或addNewMessageToPage的任何引用。如何访问集线器中的方法?

2 个答案:

答案 0 :(得分:2)

您将无法调用指定集线器的任何方法。 GetHubContext仅返回指定T Hub的IHubContext。您应该直接从Web api方法调用方法,而不是调用Hub方法,而不是像

那样调用客户端
Clients.All.addNewMessageToPage(name, message);

答案 1 :(得分:0)

尝试将Send方法设为静态,然后调用hubContext.Send(string, string)