如何從Controller調用SignalR Core Hub方法?我將ASP.NET Core 2.0與Microsoft.AspNetCore.SignalR(1.0.0-alpha2-final)一起使用。我有與Excel,SolidEdge和Excel通信的Windows服務...完成操作后,它將請求發(fā)布到ASP.NET Core應用程序中的控制器?,F在,我需要通知所有與SignalR連接到服務器的客戶端,外部程序已完成某些任務。我無法更改窗口服務的工作方式。(無法從窗口服務連接到SignalR)。我找到了許多適用于舊SignalR(GlobalHost.ConnectionManager.GetHubContext)的解決方案,但發(fā)生了很大變化,這些解決方案不再起作用。我的控制器:[Route("API/vardesigncomm")]public class VarDesignCommController : Controller{ [HttpPut("ProcessVarDesignCommResponse/{id}")] public async Task<IActionResult> ProcessVarDesignCommResponse(int id) { //call method TaskCompleted in Hub !!!! How? return new JsonResult(true); }}我的中心:public class VarDesignHub : Hub{ public async Task TaskCompleted(int id) { await Clients.All.InvokeAsync("Completed", id); }}
3 回答

米琪卡哇伊
TA貢獻1998條經驗 獲得超6個贊
現在這里有充分的證明
您可以將IHubContext實例添加到控制器中,方法是將其添加到構造函數中:
public class HomeController : Controller
{
private readonly IHubContext<NotificationHub> _hubContext;
public HomeController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
}
現在,通過訪問IHubContext實例,您可以像調用集線器本身一樣調用集線器方法。
public async Task<IActionResult> Index()
{
await _hubContext.Clients.All.SendAsync("Notify", $"Home page loaded at: {DateTime.Now}");
return View();
}
- 3 回答
- 0 關注
- 1911 瀏覽
添加回答
舉報
0/150
提交
取消