$ .connection.hub.userId undefined - PullRequest
       23

$ .connection.hub.userId undefined

0 голосов
/ 12 февраля 2019

Я новичок в SignalR и прошел пример реализации.Я создал простой Hub, и до сих пор я пытаюсь отправить сообщение конкретному пользователю.Я заставил его работать на день, но он больше не работает.Я проверил CustomUserIdProvider, и он на самом деле возвращает правильный идентификатор пользователя.Будем благодарны за любые предложения.

Это мой хаб

public class AssignmentHub : Hub
{
    public override Task OnConnected()
    {
        return base.OnConnected();
    }

    public override Task OnDisconnected(bool stopCalled)
    {
        return base.OnDisconnected(stopCalled);
    }

    public override Task OnReconnected()
    {
        return base.OnReconnected();
    }
}

Это мой CustomerUserIdProvider

public class CustomUserIdProvider: IUserIdProvider
{
    public string GetUserId(IRequest request)
    {
        var userId = ((ClaimsIdentity) HttpContext.Current.User.Identity).FindFirst(ClaimTypes.NameIdentifier).Value;
        return userId;
    }
}

Это мои скрипты из _Layout.cshtml

<script type="text/javascript" src="~/Scripts/jquery.signalR-2.4.0.min.js"></script>
<script type="text/javascript" src="~/signalr/hubs"></script>
<script type="text/javascript">
    $(function() {
        var assignmentNotificator = $.connection.assignmentHub;

        assignmentNotificator.client.addNotification = function (message) {   
            alert(message);
        }

        $.connection.hub.logging = true;
        $.connection.hub.start().done(function () {
            console.log($.connection.hub.userId);
        });
    });
</script>

И часть моего Global.asax

    protected void Application_Start()
    {
        GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => new CustomUserIdProvider());
    }

1 Ответ

0 голосов
/ 13 февраля 2019

Дэвид Фаулер подтвердил, что нет встроенного идентификатора пользователя.Затем удаление из _Layout строки с $.connection.hub.userId решит проблему.Я бы сказал, поскольку нет встроенного userId, в котором эта строка делает недействительным отображение, созданное в CustomUserIdProvider.

...