OnConnectedAsync 中的 ASP.NET Core SignalR 依赖注入

问题描述 投票:0回答:1

我创建了一个像这样的服务:

builder.Services.AddSingleton<ISessionManagerService, SessionManagerService>();
并且可以在我的集线器中用它作为参数创建新方法,就像这样:

public async Task Send(string action, object args, ISessionManagerService sessionManager)
{
    await Clients.All.Receive(action, args);
}

但是,当我覆盖

OnConnectedAsync
时,我无法添加
ISessionManagerService
作为参数。我尝试过
OnConnectedAsync(ISessionManagerService sessionManager)
OnConnectedAsync([FromServices] ISessionManagerService sessionManager)
,但都不起作用(错误是“没有找到合适的方法来覆盖”)。

OnConnectedAsync
方法中访问我的服务的正确方法是什么?

asp.net asp.net-core dependency-injection signalr asp.net-core-signalr
1个回答
0
投票

OnConnectedAsync

 的 DI 可以在 Hub 构造函数中完成。例如:

private ISessionManagerService sessionManager; public MiddlewareHub(ISessionManagerService sessionManager) { this.sessionManager = sessionManager; }
虽然此方法有效,但它并不像 Hub 中的新方法那样干净和简单。如果谁有更好的方法,请分享。

© www.soinside.com 2019 - 2024. All rights reserved.