我正在尝试在同一解决方案中的另一个项目中的一个项目中运行signalR hub方法。这两个项目都在同一个Web前端运行。
当调用以下代码时,代码在集线器中运行,直到由于不使用IHubContext对象而导致错误的程度。
presentation.ChatHub ch = new ChatHub();
ch.Send(message, "", "");
当发生这种情况时,我将代码更改为以下内容,但是集线器内的代码不再运行。
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
context.Clients.All.Send(message, "", "");
中心代码的调用如下:
public class ChatHub : Hub
{
public int Send(string message, string fName, string IName)
{
//Code Goes here.
}
我读过的所有内容,包括其他答案,似乎都指向获取IhubContext然后调用clients.all应该可以工作,但我不知道为什么它不起作用
编辑:我已经更改了我的代码,以便在运行之前在数据库中创建一个帖子,并更改它以便它运行'broadcastMessage'函数,该函数与javascript接收端匹配。然而,仍然没有正确连接,javascript功能没有被击中。
IHubContext context = GlobalHost.ConnectionManager.GetHubContext("chatHub");
context.Clients.All.broadcastMessage(message, pid, userName, FirstName, count, "", "", nDate);
答案 0 :(得分:2)
我不是100%对此,而是基于我对以下页面的理解:ASP.Net SignalR Hubs API 这是说当你从集线器外部调用一个方法时,你没有调用你在集线器上定义的方法,而是告诉集线器在所有连接的客户端上激活jquery。
这就是为什么你没有看到你的集线器方法激活。