$.connection 未定义 SignalR with ASP.Net Webforms

$.connection is undefined SignalR with ASP.Net Webforms

我正在尝试在 ASP.NET 4.0 Web Forms 中使用 SignalR。

我遵循了一个教程,我能够让 SignalR 在 default.aspx 上工作,它位于我的项目的根目录下,无需登录即可访问。

现在我想在登录后可访问的页面上使用它。

一个母版页,我有以下代码片段。

<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>

集线器 class 是 MyHub1 并且它在根级别

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 后提供凭据时 显示给用户。

现在什么时候检查开发工具 signalR/hubs 文件夹是用 js 文件创建的,但在控制台中错误是

$.connection 未定义....

我在这里做错了什么?

我需要移动 MyHub1 吗?

我通过移动脚本的引用设法解决了这个问题。感谢这个postSignalR $.connection is undefined

如本 post 中所述,在我的页面上,我检查了是否有多个对 jquery.js 文件的引用,我发现了该文件的 2 个引用,第一个是我添加的,第二个是我添加的是一个已引用 jquery.js 文件的脚本块。

我将对脚本块的引用移动如下:

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

在上述脚本块之后还移动了一段客户端代码。

我进行此更改后它开始工作了。