在ASP.NET MVC应用程序中无法使用Signal R调用客户端方法

时间:2018-06-09 03:09:44

标签: asp.net-mvc signalr

出于某种原因,我只是在我的ASP.NET MVC应用程序中使用Signal-R调用客户端方法时遇到了麻烦,并且想知道是否有人可以提供帮助。

这是我到目前为止所拥有的。我有一个名为" NotifyUser"以下内容:

public class NotifyUser : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }
}

在Document.Ready()的javascript文件中的客户端上,我有:

$(function () 
{
   var notifyUser = $.connection.notifyUser;

   notifyUser.client.addNewMessageToPage= function (name, message) 
   {
        var x = 5;
   };

   $.connection.hub.start();
})

我尝试从服务器上的控制器调用客户端方法,如下所示:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<NotifyUser>();
hubContext.Clients.All.Send("George", "Hi");    

当我在&#34; addNewMessageToPage&#34;中设置断点时在客户端上的功能永远不会被击中。有人可以帮忙吗?感谢。

皮特

1 个答案:

答案 0 :(得分:0)

当您想从控制器调用hub方法时,它必须声明为 static 方法,如下所示:

public class NotifyUser : Hub
{
    public static void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }
}

这种变化解决了你的问题,但请注意,如果你想从客户端java脚本调用hub方法,它必须是非静态,所以你必须声明两个方法:一个静态用于控制器调用和另一个非静态的java脚本调用