出于某种原因,我只是在我的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;中设置断点时在客户端上的功能永远不会被击中。有人可以帮忙吗?感谢。
皮特
答案 0 :(得分:0)
当您想从控制器调用hub方法时,它必须声明为 static 方法,如下所示:
public class NotifyUser : Hub
{
public static void Send(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}
}
这种变化解决了你的问题,但请注意,如果你想从客户端java脚本调用hub方法,它必须是非静态,所以你必须声明两个方法:一个静态用于控制器调用和另一个非静态的java脚本调用