asp.net-mvc - 无法在 ASP.NET MVC 应用程序中使用 Signal R 调用客户端方法
问题描述
出于某种原因,我无法从我的 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");
当我在客户端的“addNewMessageToPage”函数中设置断点时,它永远不会被命中。有人可以帮忙吗?谢谢。
皮特
解决方案
当您想从控制器调用集线器方法时,它必须声明为静态方法,如下所示:
public class NotifyUser : Hub
{
public static void Send(string name, string message)
{
Clients.All.addNewMessageToPage(name, message);
}
}
此更改解决了您的问题,但请注意,如果您想从客户端 java 脚本调用集线器方法,它必须是非静态的,因此您必须声明两种方法:一种用于控制器调用的静态方法,另一种用于 java 脚本调用的非静态方法
推荐阅读
- javascript - 无法在 Node JS 应用程序中连接 MongoDB
- macos - 在 Mac 上升级到 Catalina 后无法打开 Typinator
- algolia - 选择后如何显示城市,州?
- docker - Docker在向容器添加网络时突然删除卷
- vba - PowerPoint VBA:识别/替换 DokChampa 字体中的老挝语文本
- git - 去掉 Git lfs 链接到文件,直接添加到 git
- mysql - Laravel 中具有不同类型幻灯片的滑块的数据库模式
- jquery - pickadate.js 禁用第二个星期六或禁用一个月中任何选定周的星期六
- css - JavaFX DatePicker 产生严重:无法加载皮肤“com.sun.javafx.scene.control.skin.TextFieldSkin”
- java - 如何检查我的半径中是否已经注册了位置