Microsoft.AspNetCore.SignalR HubCallerContext Context возвращает значение NULL - PullRequest
0 голосов
/ 15 мая 2018

У меня есть приложение на 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 равны нулю. Как мне их использовать? Я что-то упустил?

...