我知道这个问题已被多次询问,但我尝试了所有解决方案,似乎没有一个适合我的问题。
我收到以下错误:
0x800a138f - JavaScript runtime error: Unable to get property 'chatHub' of undefined or null reference.
错误是随机出现的,有时当我运行我的webapp时会发生这种情况,有时它不会运行我的应用程序并正常使用集线器。
索引页面中的脚本:
@section scripts
{
<script src="Scripts/jquery.signalR-2.0.3.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
var chatHub = $.connection.chatHub;
chatHub.client.add = function (message) {
$('#listMessages').append('<li>' + message + '</li>');
};
$.connection.hub.start().done(function () {
$('#SendMessage').click(function () {
var message = $('#txtMessage').val();
chatHub.server.send($('#who').val(), message);
$('#listMessages').append('<li>' + 'You said : ' + message + '</li>');
})
});
})
</script>
}
布局是visual studio的互联网MVC应用程序的默认布局,其中包含:
@Scripts.Render("~/bundles/jquery")
我的简单中心:
[HubName("chatHub")]
public class ChatHub : Hub
{
public void send(string sendTo, string message)
{
base.Clients.Group(sendTo).add(Context.User.Identity.Name + " said : " + message);
}
public override Task OnConnected()
{
base.Groups.Add(Context.ConnectionId, Context.User.Identity.Name);
return base.OnConnected();
}
}
出于某种原因,我不断收到错误 。我该如何解决?谢谢!
编辑:在遵循DaveB的建议后,我使用了Fiddler进行检查,似乎它要求信号器/集线器不是来自/ signalr / hubs,而是来自/ mycontroller / signalr / hubs,这不是一个有效的地址(同样的) jquery-signalsr js的错误。我该如何解决这个问题?
答案 0 :(得分:5)
将脚本加载更改为<script src="/signalr/hubs"></script>
(请注意初始正斜杠),以便从根目录而不是相对于当前目录加载。