У меня есть приложение на ASP.NET Core, в котором я пытаюсь реализовать связь SignalR между серверной частью и клиентским кодом. В классе, который реализует абстрактный класс Hub, у меня есть метод, в котором я пытаюсь добавить нового подключенного пользователя. Но унаследованное свойство - public HubCallerContext Context { get; set; }
из класса Hub, которое должно получить connectionId, является нулевым. Вышесказанное выглядит так:
public class TestHub : Hub, ITestHub
{
private IHubContext<TestHub> _hubContext;
public ChatHub(IHubContext<TestHub> context)
{
_hubContext = context;
}
public void Connect(string userName)
{
var id = Context.ConnectionId;//The property in null
if (!Users.Any(x => x.ConnectionId == id))
{
Users.Add(new User { ConnectionId = id, Name = userName });
Clients.Caller.onConnected(id, userName, Users);
Clients.AllExcept(id).onNewUserConnected(id, userName);
}
}
}
У меня есть конфигурации в классе запуска, такие как:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSignalR();//registering SignalR
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie();
services.RegisterServices();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//some code
app.UseSignalR(routes =>
{
routes.MapHub<ChatHub>("/chathub");
});
//some code
}
Я получаю свой IHubContext _context при вызове (ServiceProvider) provider.GetService () путем внедрения зависимости, но любые свойства унаследованного класса Hub равны нулю. Как мне их использовать? Я что-то упустил?