$ .connection。(hubname)未定义。信号器/集线器501(未实现)

时间:2012-08-03 07:25:40

标签: asp.net-mvc-4 signalr signalr-hub

我有一个MVC 4应用程序,它有一个注册页面。

集线器的代码如下: -

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using SignalR.Hubs;

[HubName("messageHub")]
public class MessageHub : Hub
{
    /// <summary>
    /// Broadcast the message to all clients
    /// </summary>
    /// <param name="message">message to be broadcasted</param>
    public void Broadcast(string message, string messagetype, string messagetitle)
    {
        this.Clients.showMessage(message, messagetype, messagetitle);
    }
    public void Getsubscription()
    {

    }
}

同样,JS中心代码是: -

<script type="text/javascript" src="@Url.Content("~/Scripts/json2.js")"></script>
<script src= "@Url.Content("~/Scripts/jquery.signalR-0.5.2.js")" type="text/javascript"></script>
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
<h2>Index</h2>
<script type="text/javascript">
    $(document).ready(function () {
        //Initialize hub
        var hub = $.connection.messageHub;

        // hub.start();
        $.connection.hub.start();
        //Append event to Button
        //hub.broadcast("c","b","a");

    });

</script>

现在,在运行之后将$ .connection.messageHub作为未定义

Screenshot in debug mode

其次我的chrome网络显示; - Network -Chrome

第三,当点击信号器/集线器的启动器时,我没有实现错误: - enter image description here

我尝试更改脚本的URL,也作为IIS运行,但无法使其正常工作。 如果我将我的脚本保存在.cshtml(查看)中并更改 - &gt;使用本地IIS Web服务器,它的工作正常 任何帮助。!

2 个答案:

答案 0 :(得分:3)

  

@ Scripts.Render( “〜/捆绑/ Modernizr的”)

     

@ Scripts.Render( “〜/捆绑/ jquery的”)

在布局部分评论了这一部分并为我工作。

答案 1 :(得分:1)

我发现在bundle config中添加对/signalr/hubs的引用不起作用,因为它是在运行时生成的,捆绑是在编译时发生的。
所以我这样做了:
1-在每个视图中创建了一个这样的部分,我需要引用signalr/hubs

    @section SignalRScripts{
    <script src="/signalr/hubs"></script>
    }  
在渲染所有其他脚本后,在我的布局文件中

2-,呈现此部分:

    @Scripts.Render("~/js")  
    @RenderSection("SignalRScripts", required: false)  
    @RenderSection("Scripts", required: false) 

然后它工作正常。