我正在寻找快速而肮脏的答案.我只是消隐,盯着屏幕超过12个小时,我想我被枪杀了.
我想做一个简单的SignalR应用程序作为教程.我发现这个example,但是我不断收到门票未定义的错误.我找到了几个,并且不断得到相同的错误.我将样例项目与我进行了比较,我找不到任何差异.
似乎$.connection.ticketHub或$.connection.chat返回未定义的对象.有什么特别的,我需要用/ signalr / hubs?任何其他想法都非常感激.
解决方法
您需要将/ signalr / hubs添加到页面,它是由SignalR动态生成的一个JavaScript,其中包含用于集线器的方法存根和集线器上的方法.
所以如果你有一个名为TestHub的.NET集线器,那么将会生成一个名为SendMessage(String message)的方法,这样你就可以从JavaScript调用:$.connection.testHub.sendMessage(“some message to server”);
将浏览器指向url:/ signalr / hubs,你应该得到一个javascript.
大约150行下来你会看到ticketHub存根:
$.extend(signalR,{ ticketHub: { _: { hubName: 'YourNameSpace.TicketHub',ignoreMembers: ['someMethod','namespace','ignoreMembers','callbacks'],connection: function () { return signalR.hub; } },
您可以使用Mozilla Firebug插件或Chrome开发人员工具(扳手图标 – > Tools->开发工具)查看发送到服务器并从服务器返回的内容.
编辑:SignalR Prevention / signalr / hubs有一个错误正确生成(它没有生成方法存根). https://github.com/SignalR/SignalR/issues/134
EDIT2:你可能有一个不正确的脚本标签,尝试:
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
或者您没有引用SignalR.AspNet.dll程序集.如果我记得正确的是那个装配线连接到/ signalr的路由.