Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在控制器(ASP.NET内核)中执行DI时,如何使用Signal中的Clients.Caller和Clients.Others?_C#_Asp.net Core_Signalr - Fatal编程技术网

C# 在控制器(ASP.NET内核)中执行DI时,如何使用Signal中的Clients.Caller和Clients.Others?

C# 在控制器(ASP.NET内核)中执行DI时,如何使用Signal中的Clients.Caller和Clients.Others?,c#,asp.net-core,signalr,C#,Asp.net Core,Signalr,我正在使用带ASP.NET核心的SignalR: 公共类通知中心:中心 { } [路由(“api/[控制器]”)] [ApiController] 公共类控制器:ControllerBase { 私有只读IHubContext\u hubContext; 公共AController(IHubContext-hubContext) { _hubContext=hubContext; } } 我发现我只能使用属性Clients.Caller和Clients.Others 公共类通知中心:中心 {

我正在使用带ASP.NET核心的SignalR:

公共类通知中心:中心
{
}
[路由(“api/[控制器]”)]
[ApiController]
公共类控制器:ControllerBase
{
私有只读IHubContext\u hubContext;
公共AController(IHubContext-hubContext)
{
_hubContext=hubContext;
}
}
我发现我只能使用属性
Clients.Caller
Clients.Others

公共类通知中心:中心
{
公开无效测试()
{
Clients.Caller.SendAsync(“aMethod”);
Clients.Others.SendAsync(“aMethod”);
}
}
使用
IHubContext
时,我只能访问:

\u hubContext.Clients.All

是否有任何方法可以访问
客户端。调用者
客户端。集线器外部的其他属性?

您的信号器客户端仅与集线器通信,因此控制器中永远不会有“调用者”,只有集线器中才有

您传递给控制器的HubContext可用于将消息发送回任何已注册的连接,方法是向所有连接或选定的连接ID组广播


因此,如果可以将控制器用户与连接id相匹配,则可以通过发出
Clients.Client(“连接id”)
,获得与
Clients.Caller
等效的连接id,并通过使用
Clients.AllExcept(…)获得与
Clients.Others
或类似内容。

MS在没有呼叫clinet的情况下提供和IHuBContext是毫无意义的

总是有一个正在调用的客户机,获得它的唯一方法是通过依赖项注入。
你真丢脸,女士。

谢谢,这很有道理。出于好奇,我将检查
Clients.Caller
Clients.Others