$.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>
在上述脚本块之后还移动了一段客户端代码。
我进行此更改后它开始工作了。
我正在尝试在 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>
在上述脚本块之后还移动了一段客户端代码。
我进行此更改后它开始工作了。