Signalr 在信号转换问题中,对特定客户端的调用(使用Invoke)失败
有人能解释一下为什么第二次呼叫(对个人客户)无效吗Signalr 在信号转换问题中,对特定客户端的调用(使用Invoke)失败,signalr,Signalr,有人能解释一下为什么第二次呼叫(对个人客户)无效吗 IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<SymHubGrid>(); ((ClientProxy)(hubContext.Clients.All)).Invoke(method, msg); // OK ((ClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(met
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<SymHubGrid>();
((ClientProxy)(hubContext.Clients.All)).Invoke(method, msg); // OK
((ClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(method, msg); // FAIL
IHubContext-hubContext=GlobalHost.ConnectionManager.GetHubContext();
((ClientProxy)(hubContext.Clients.All)).Invoke(方法,msg);//好啊
((ClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(方法,msg);//失败
它失败,出现以下异常:{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法将类型“Microsoft.AspNet.signal.Hubs.ConnectionIdProxy”转换为“Microsoft.AspNet.signal.Hubs.ClientProxy” 这是连接到我的早期
谢谢您不需要将其强制转换为ClientProxy就可以调用它。hubContext.Clients.All.Invoke(method,msg)就是您所需要的。实际上,您根本不需要调用,只需要hubContext.Clients.All.method(msg);Oeps-找到了答案-我需要转换为IClientProxy-而不是实际的代理 感谢halter73在这方面的贡献: 它的工作原理如下:(注意IClientProxy!)
IHubContext-hubContext=GlobalHost.ConnectionManager.GetHubContext();
((IClientProxy)(hubContext.Clients.All)).Invoke(方法,infoDown);
((IClientProxy)(hubContext.Clients.Client(hubConnID)).Invoke(方法,infoDown);
谢谢,但我确实需要以某种方式强制转换它,以便调用Invoke。我需要它,因为我在运行时之前不知道要调用的方法-请参阅前面的相关文章。您是否尝试过不强制转换的裸调用?我查看了信号器代码,Invoke(method,msg)应该可以工作。查看您的其他问题,看起来是正确的。
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<SymHubGrid>();
((IClientProxy)(hubContext.Clients.All)).Invoke(method, infoDown);
((IClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(method, infoDown);