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);