.NET Framework 4.8.1 MVC中SignalR GetHubContext调用返回undefined
问题分析与解决方案
问题核心是Controller调用SignalR客户端方法时未传递邀请数量参数:
- 当通过Hub的
Notify方法触发时,你会先查询邀请数量,再通过Clients.All.GetCountInvitations(invitations.Count)把数值传给前端,所以控制台能输出正确结果; - 但Controller里调用
context.Clients.All.GetCountInvitations()时,没有传入任何参数,前端接收的result自然是undefined。
修复方案
方案1:在Controller中补充参数传递
直接在Controller里查询邀请数量,再传给客户端方法:
var mongo = new Mongo(); var invitations = await mongo.GetCountInvitations(LoginController._username); var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); context.Clients.All.GetCountInvitations(invitations.Count);
方案2:复用Hub的Notify逻辑
避免重复代码,直接调用Hub的Notify方法触发推送:
var context = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); await context.Clients.All.InvokeAsync("Notify");
修改后,通过Controller触发时,前端就能接收到正确的邀请数量,控制台不再输出undefined。
内容的提问来源于stack exchange,提问作者MarcoGG
相关产品推荐
相关产品推荐

