我在一个MVC4应用程序中使用Visual Studio2012 Ultimate RC、SignalR 0.5.1和jQuery1.7.2。
我看过:MVC4 SignalR "signalr/hubs" 501 Not Implemented Error
但这并不影响我的问题(我正在使用IIS Express进行调试)。
当我尝试使用SignalR时,$.connection变量未定义。我的服务器端代码:
[HubName("tenantHub")]
public class TenantHub : Hub
{
...
void TenantChange(CrudAction action, Tenant tenant)
{
Clients.eventOccurred(action.ToString(), tenant);
}
}
客户端:
$(function() { var test = $.connection.tenantHub; });
客户端SignalR/hubs
被引用,我可以看到JS代码,它没有抛出任何错误。但是引用$.connection会抛出Uncaught TypeError: Cannot read property 'tenantHub' of undefined
。我也尝试做了默认的聊天示例,它给出了同样的错误。在VS2012中使用SignalR是不受支持的,还是我太愚蠢了?
发布于 2012-07-05 21:28:36
试着把[HubName("tenantHub")]
从你的课上移走。如果我把它们放在上面我的就不能用了。还可以尝试将hubs放到项目根目录下名为"Hubs"
的文件夹中。
发布于 2013-04-04 06:20:25
这通常是由于两次加载jQuery而导致的。通常我们养成了在页脚加载jQuery的习惯。因为signalr会抱怨并强制您在signalr-x.js之前包含jQuery库。
您可以在signalr-x.js之前包含jQuery,并且可以在包含jQuery插件的页脚中执行以下操作,以避免两次加载它:
<script type="text/javascript">
!window.jQuery && document.write('<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"><\/script>');
!window.jQuery && document.write('<script src="/public/js/vendor/jquery-1.9.1.min.js"><\/script>');
</script>
希望这能有所帮助。:)
发布于 2012-08-27 03:33:16
我在VS2012 RTM中也遇到了同样的问题。
问题是我首先在BundleConfig.cs中添加了signalr,并期望它能正常工作。但是在浏览器中使用“查看源代码”时,我注意到在jquery.js之前包含了signalr.js。signalr.js包含在页面顶部,jquery包含在页面底部。
在对BundleConfig进行了一些修改之后,signalr.js被包含在jquery.js之后,而现在signalr的工作就像一个护身符!
https://stackoverflow.com/questions/11179644
复制相似问题