Signalr $.hubConnection不是一个函数(…;)

Signalr $.hubConnection不是一个函数(…;),signalr,signalr-hub,Signalr,Signalr Hub,我的信号机项目遇到了问题。我已经创建了一个控制台来运行SignalR,然后尝试将其用于我的网站(目前都在本地主机模式下运行) 信号服务器主机 using System; using Microsoft.AspNet.SignalR; using Microsoft.Owin.Hosting; using Owin; using Microsoft.Owin.Cors; using Microsoft.AspNet.SignalR.Hubs; namespace SignalRSelfHost

我的信号机项目遇到了问题。我已经创建了一个控制台来运行SignalR,然后尝试将其用于我的网站(目前都在本地主机模式下运行)

信号服务器主机

using System;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;
using Owin;
using Microsoft.Owin.Cors;
using Microsoft.AspNet.SignalR.Hubs;

namespace SignalRSelfHost
{
    class Program
    {
        static void Main(string[] args)
        {
            // This will *ONLY* bind to localhost, if you want to bind to all addresses
            // use http://*:8080 to bind to all addresses. 
            // See http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx 
            // for more information.
            string url = "http://localhost:8080";
            using (WebApp.Start(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }
    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
        }
    }
    [HubName("myHub")]
    public class MyHub : Hub
    {
        public void Send(string name, string message)
        {
            Clients.All.addMessage(name, message);
        }
    }
}
Index.Html

<script src="Scripts/jquery-3.1.1.min.js"></script>

<script src="Scripts/jquery.signalR-2.2.1.min.js"></script>

<script src="http://localhost:8080/signalr/hubs"></script>

<script type="text/javascript">
    $(function () {
        //Set the hubs URL for the connection
        //$.connection.hub.url = "http://localhost:8080/signalr";

        //// Declare a proxy to reference the hub.
        //var chat = $.connection.myHub;

        var conn = $.hubConnection("http://localhost:8080/signalr");
        var hubProxy = conn.createHubProxy('myHub');


        conn.start().done(function () {
        });
    });
</script>

$(函数(){
//设置连接的集线器URL
//$.connection.hub.url=”http://localhost:8080/signalr";
////声明代理以引用中心。
//var chat=$.connection.myHub;
变量连接=$.HUB连接(“http://localhost:8080/signalr");
var hubProxy=conn.createHubProxy('myHub');
连接开始()已完成(函数(){
});
});
上面提到的一些已经被证明是正确的,因为我也尝试过,但也没有成功

有人能告诉我为什么会出现错误:$。hubConnection不是一个函数(…)集线器:

[HubName("ContosoChatHub")]
public class ChatHub : Hub
Javascript客户端:删除url,您不需要它

var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('ContosoChatHub');

connection.start()
   .done(function(){ console.log('Now connected, connection ID=' + $.connection.hub.id); })
   .fail(function(){ console.log('Could not Connect!'); });
});

createHubProxy中的字符串必须与HubName属性中的字符串相同。

我刚刚遇到了相同的问题。问题是JQuery脚本在页面底部再次运行(我使用的ASP.NET MVC模板的一部分),清除了SignalR JQuery注册。请确保没有额外的脚本标记或
@Scripts.Render
调用位于HTML页面底部。

我不确定是否支持您的jQuery版本。我有奇怪的副作用,jQuery的错误版本被加载或多次加载。
使用JSPM
JSPM解析时--仅npm:jquery@2.2.4
帮助

这些Verison工作:

<script src="jquery-2.1.4.min.js"></script>
<script src="jquery.signalR-2.2.0.min.js"></script>

我还建议在指定
轮毂连接时省略“/signalr”后缀。它是自动添加的。

您是否在客户端使用Visual Studio项目模板?当服务器和客户端位于不同的服务器上时,如何删除url?很抱歉,回答您的问题花了这么长时间,代理是自动生成的,它知道如何解决它。你所做的是试图告诉它在一个特定的位置解决,这是没有必要的。/讽刺/我喜欢人们在没有提供理由的情况下记下答案/挖苦/无法知道我是否真的错了(这不是第一次也不是最后一次),或者他们是否误解了答案。简单地记下答案对任何人都没有帮助。
"jquery": "npm:jquery@2.2.4",
"ms-signalr-client": "npm:ms-signalr-client@2.2.5",