有人可以解释为什么第二次电话(对个人客户)无效吗?
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<SymHubGrid>();
((ClientProxy)(hubContext.Clients.All)).Invoke(method, msg); // OK
((ClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(method, msg); // FAIL
失败,但有以下例外:
{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:无法将类型'Microsoft.AspNet.SignalR.Hubs.ConnectionIdProxy'转换为'Microsoft.AspNet.SignalR.Hubs.ClientProxy
它与我之前的post相关联。
由于
答案 0 :(得分:1)
您无需将其强制转换为ClientProxy即可调用Invoke。 hubContext.Clients.All.Invoke(method,msg)就是你所需要的。实际上,你根本不需要调用,只需要hubContext.Clients.All.method(msg);
答案 1 :(得分:1)
Oeps - 找到答案 - 我需要转发到IClientProxy - 而不是实际的代理!
感谢此post中的halter73:
它的工作原理如下:(注意IClientProxy!)
IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<SymHubGrid>();
((IClientProxy)(hubContext.Clients.All)).Invoke(method, infoDown);
((IClientProxy)(hubContext.Clients.Client(hubConnID))).Invoke(method, infoDown);