Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Signalr 信号器:$。连接未定义_Signalr_Visual Studio 2012_.net 4.5 - Fatal编程技术网

Signalr 信号器:$。连接未定义

Signalr 信号器:$。连接未定义,signalr,visual-studio-2012,.net-4.5,Signalr,Visual Studio 2012,.net 4.5,我正在MVC4应用程序中使用Visual Studio 2012 Ultimate RC、SignalR 0.5.1和Jquery 1.7.2 我看过: 但它不会影响我的问题(我正在使用IIS Express进行调试) 当我尝试使用signar时,$.connection变量未定义。我的服务器端代码: [HubName("tenantHub")] public class TenantHub : Hub { ... void TenantChange(CrudAction act

我正在MVC4应用程序中使用Visual Studio 2012 Ultimate RC、SignalR 0.5.1和Jquery 1.7.2

我看过:

但它不会影响我的问题(我正在使用IIS Express进行调试)

当我尝试使用signar时,$.connection变量未定义。我的服务器端代码:

[HubName("tenantHub")]
public class TenantHub : Hub
{
    ...
    void TenantChange(CrudAction action, Tenant tenant)
    {
        Clients.eventOccurred(action.ToString(), tenant);
    }
}
客户端:

$(function() { var test = $.connection.tenantHub; });

客户端
signar/hubs
正在被引用,我可以看到JS代码,它不会抛出任何错误。但是引用$.connection会引发一个
未捕获的类型错误:无法读取未定义的
的属性“tenantHub”。还尝试了默认的聊天示例,它给出了相同的错误。在VS2012中使用SignalR时是不受支持的还是我太愚蠢了

尝试删除
BundleConfig.RegisterBundles(BundleTable.Bundles),看看这是否有帮助?

试着把
[HubName(“tenathub”)]
从你的课堂上撤下来。如果我在那里的话,我的就不行了。还可以尝试将集线器放入项目根目录下名为“集线器”的文件夹。

我在VS2012 RTM中也遇到了同样的问题

问题是,我首先在BundleConfig.cs中添加了signal,并期望它能够正常工作。 但是在浏览器中使用“查看源代码”时,我注意到signalr.js包含在jquery.js之前。signalr.js包含在页面顶部,jquery包含在页面底部


在对BundleConfig进行了一些修改之后,jquery.js之后包含了signalr.js,现在signalr就像一个魔咒一样工作

尝试放置
RouteTable.Routes.MapHubs()
作为
Global.asax.cs


我有一个

这通常是由于加载jQuery两次而导致的。通常我们习惯于在页脚中加载jQuery。因为signer抱怨并强迫您在signer-x.js之前包含jQuery库

您可以在signal-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>

!window.jQuery和document.write(“”);
!window.jQuery和document.write(“”);

希望这有帮助。:)

我有一个类似的问题,我的是在visual studio 2010调试中工作,但不是在本地主机(IIS7.5 windows 7)上。我发现“信号器/集线器”的定义中有一个额外的斜杠,我使用的是“/signer/hubs”。我还添加了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">

希望这对其他人有帮助。我现在正在多台PC上玩chrome、IE9、10,这是一个多么棒的库啊

确保没有重复的中心名称;[HubName(“tenantHub”)]-这是两个或多个用相同名称修饰的集线器类。

如果这些都不适用于您,请确保在最终html源中,不仅在jQuery之后显示对信号器脚本的引用,而且版本与脚本文件夹中的实际文件相匹配

<script src="~/Scripts/jquery.signalR-2.0.2.js"></script> 

例如,这一行与SignalR的2.0.2版本相匹配,如果您通过软件包升级SignalR,则必须手动编辑这一行。

与John相反

我必须在信号机/集线器声明中添加一个/


变成

<script src="/signalr/hubs" type="text/javascript"></script>


您是否尝试在服务器上调试?有例外吗?你接通了吗<代码>$.connection.hub.start()这就是我现在所能想到的:(是的,我试过了,但是'connection'变量本身没有定义。我认为问题来自.js文件的位置,您是否输入了
jquery.signalR-0.5.1.min.js
signalR/hubs
?也许您应该尝试使用
firebug
jquery.signalR-0.5.1.min.js
signalR/hubs来调试它。)正在被引用,没有抛出任何错误。这对我来说很有效!找出了原因,默认情况下MVC4模板在布局文件的底部包含jQuery(出乎意料,考虑到顶部包含Modernizer,这似乎很愚蠢)。因此,我的页面包含了两次jQuery,这一切都搞砸了。谢谢Thiem:)这正是我使用默认MVC4模板时遇到的问题。谢谢!!事实上,这很有帮助,但正确的方法是在脚本部分
@section scripts{}
中包含您的其他脚本,如果您想使用默认布局,或者更改布局以满足您的需要(脚本在顶部,布局中没有jquery等)确实如此!大+1:)(尽管新手犯了我的错误…)
<script src="signalr/hubs" type="text/javascript"></script>
<script src="/signalr/hubs" type="text/javascript"></script>