$ .connection не определено SignalR с ASP. Net Веб-формами - PullRequest
0 голосов
/ 02 февраля 2020

Я пытаюсь использовать SignalR в ASP. NET 4.0 веб-формах.

Я прошел обучение и смог заставить SignalR работать с default.aspx, который находится на root моего проекта, который доступен без входа в систему.

Теперь я хочу использовать его на страницах, которые доступны после входа в систему.

Одна главная страница, у меня есть следующий фрагмент кода.

<head>
 ....
 ...
<script src="../Scripts/jquery-1.6.4.js"></script>
<script src="../Scripts/jquery.signalR-2.0.0.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
    $(function () {

        var logger = $.connection.myhub1;

        logger.client.logMessage = function (msg) {
            console.log(msg);
            //$("#logUl").append("<li>" + msg + "</li>");

        };

        $.connection.hub.start({ pingInterval: 10000 }).done(function () {
            alert('Hub starts');
        }).fail(function (e) {
            alert('There was an error');
            console.error(e);
        });
        $.connection.hub.logging = true;

    });
</script>

...
...

</head>

Класс концентратора - MyHub1, и его уровень root

Imports Microsoft.AspNet.SignalR
Imports Microsoft.AspNet.SignalR.Hubs

<HubName("myhub1")>
Public Class MyHub1
    Inherits Hub

    Public Shared ReadOnly _Timer As System.Timers.Timer = New System.Timers.Timer()

    Shared Sub New()
        _Timer.Interval = 2000
        AddHandler _Timer.Elapsed, AddressOf TimerElapsed
        _Timer.Start()
    End Sub

    Private Shared Sub TimerElapsed(ByVal sender As Object, ByVal e As System.Timers.ElapsedEventArgs)
        Dim hub = GlobalHost.ConnectionManager.GetHubContext("myhub1")
        hub.Clients.All.logMessage(String.Format("{0} - Still running", DateTime.UtcNow))
    End Sub
    Public Shared Sub LogMessage(ByVal str As String)
        Dim hub = GlobalHost.ConnectionManager.GetHubContext("myhub1")
        hub.Clients.All.logMessage(str)
    End Sub
End Class

Мастер-страница применяется к UserDefault.aspx, к которому применена мастер-страница с кодом javascript, указанным выше. На default.aspx, когда пользователь вводит учетные данные после входа в систему. UserDefault.aspx показывается пользователю.

Теперь при проверке в инструменте dev создается папка signalR / hubs с файлом js, но в консоли ошибка

$. Соединение не определено ....

Что я здесь не так делаю?

Нужно ли перемещать MyHub1?

1 Ответ

0 голосов
/ 08 февраля 2020

Мне удалось решить эту проблему, переместив ссылки на скрипты. Благодаря этому сообщению SignalR $ .connection не определено

Как упоминалось в этом сообщении, на своей странице я проверил, есть ли несколько ссылок на файл jquery. js, и нашел 2 ссылки на этот файл, первый, который я добавил, и второй, это был блок Script, который уже имел ссылку на файл jquery. js.

Я переместил ссылку на блок скрипта, как показано ниже:

<Script>
 ...
 ...
 <asp:ScriptReference Path="~/Scripts/jquery.signalR-2.0.0.js" />
 <asp:ScriptReference Path="~/signalr/hubs" />
</Script>

Также часть кода клиента была перемещена после вышеприведенного блока Script.

После того, как я внес это изменение, он начал работать.

...