我在MVC4应用程序中使用的Visual Studio 2012 RC最终,SignalR 0.5.1和jQuery 1.7.2。
我看过: MVC4 SignalR“signalr /集线器” 501未执行错误
不过,这并不影响我的问题(我使用IIS Express来调试)。
当我尝试利用SignalR的$■连接变量是不确定的。 我的服务器端代码:
[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代码,它不会引发任何错误。 但是,引用$■连接抛出一个Uncaught TypeError: Cannot read property 'tenantHub' of undefined
。 也试过做默认的聊天例子,它给出了同样的错误。 在VS2012使用的还是我只是愚蠢的时候是不支持SignalR?
尝试采取[HubName("tenantHub")]
把你的类。 如果我有那些有煤矿是行不通的。 也可以尝试把你的集线器到一个文件夹,名为"Hubs"
,在你的项目的根目录。
尝试除去BundleConfig.RegisterBundles(BundleTable.Bundles);
从Global.asax.cs中 ,并看看是否有帮助?
这通常是我们造成的,由于装载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>
希望这可以帮助。 :)
我在VS2012 RTM同样的问题。
问题是,我第一次在BundleConfig.cs添加signalr和期望它只是工作。 但随后我注意到signalr.js是jquery.js和之前包含在浏览器中使用“查看源文件”。 signalr.js被列入页面顶部jQuery是包含在页面的底部。
一些与BundleConfig signalr.js摆弄被列入的jquery.js后后,现在signalr工程就像一个魅力!
尝试把RouteTable.Routes.MapHubs();
如在第一个项目Application_Start()
中Global.asax.cs
我有一个示例代码/项目在这里
如果这些对你的工作的,请确保您的最终HTML源不仅参考SignalR脚本的jQuery后出现,而且该版本,你在你的脚本文件夹中有实际的文件相匹配。
<script src="~/Scripts/jquery.signalR-2.0.2.js"></script>
例如,这一个版本2.0.2 SignalR的匹配,如果您通过包升级SignalR那么你就必须手动编辑这一行。
我有一个类似的问题,我的是工作形式的Visual Studio 2010的调试,但不是在本地主机(IIS7.5的Windows 7)。 我发现,我原来在定义“signalr /中心”,我是用“/ signalr /集线器”额外的斜线。 我还添加JSON 2 JS浏览器兼容性参考。 注宣布.js文件的顺序很重要。
<script src="Scripts/JSON2.js" type="text/javascript"></script>
<script src="http://code.jquery.com/jquery-1.8.2.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-1.1.2.min.js" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
<script type="text/javascript">
为了找到这个问题我开启记录如下,看着在开发者工具控制台查看错误在本地主机上部署时。
// Logs errors to the browser dev 'f12' console
$.connection.hub.logging = true;
希望这可以帮助别人。 我与镀铬打,IE9,10多台PC上现在 - 什么一个伟大的图书馆!
确保你没有重复的名字枢纽; [HubName(“tenantHub”)] - 这是两个或更多个集线器类装饰有相同的名称。
在相反的约翰,
我不得不添加/到signalr /集线器声明
即。
<script src="signalr/hubs" type="text/javascript"></script>
成为
<script src="/signalr/hubs" type="text/javascript"></script>