【问题标题】:$.connection.(hubname) is undefined. Signalr/hub 501(not implemented)$.connection.(hubname) 未定义。信号器/集线器 501(未实现)
【发布时间】:2012-08-03 07:25:39
【问题描述】:

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

hub的代码如下:-

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 hub代码是:-

<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 as undefined

其次,我的 chrome 网络显示;-

第三,当单击信号器/集线器的启动器时,我得到未实现错误:-

我尝试更改脚本的 URL,也作为 IIS 运行,但无法使其正常工作。 如果我将我的脚本保存在 .cshtml(视图)中并更改-> 使用本地 IIS Webserver,它的工作正常 任何帮助。!

【问题讨论】:

  • 我假设你也包括了基本的 jQuery 库?还有,是否定义了 $.connection?
  • 如果您在浏览器中手动导航到该网址,它会显示什么?
  • @AndersHolmström 我已在我的第一个屏幕截图中粘贴了连接响应。只是想更新一下,如果我将脚本保存在 .cshtml(视图)中并更改使用本地 IIS Webserver,它的工作正常!

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


【解决方案1】:

@Scripts.Render("~/bundles/modernizr")

@Scripts.Render("~/bundles/jquery")

在布局部分中将此部分注释掉并为我工作。

【讨论】:

  • 所以信号器还不兼容捆绑包?
  • Bundles 在编译时加载,但/signalr/hubs 在运行时生成。我认为这就是为什么在这种情况下使用 bundle 不起作用的原因。
【解决方案2】:

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

    @section SignalRScripts{
    <script src="/signalr/hubs"></script>
    }  

2-在我的布局文件中渲染所有其他脚本后,渲染了这个部分:

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

然后它工作正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-28
    相关资源
    最近更新 更多