Signalr 信号员:协商请求期间出错:未定义

Signalr 信号员:协商请求期间出错:未定义,signalr,signalr-hub,signalr.client,Signalr,Signalr Hub,Signalr.client,我一直在尝试让javascript signal-r客户端与自托管owin服务器协同工作。我遇到了这个问题。我尝试了代理和无代理两种方法,结果都是相同的,错误是“signer:error-during-negotiation-request:undefined” 我已经能够让跨域示例运行,没有任何问题,也无法找出我做错了什么,有人有什么想法吗 浏览器控制台获取尝试协商的日志,然后我得到失败 服务器/集线器 namespace SignalROwinHost { class Program

我一直在尝试让javascript signal-r客户端与自托管owin服务器协同工作。我遇到了这个问题。我尝试了代理和无代理两种方法,结果都是相同的,错误是“signer:error-during-negotiation-request:undefined”

我已经能够让跨域示例运行,没有任何问题,也无法找出我做错了什么,有人有什么想法吗

浏览器控制台获取尝试协商的日志,然后我得到失败

服务器/集线器

namespace SignalROwinHost
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:9000/";
            using (WebApplication.Start<Startup>(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }

        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.MapHubs();
            }

        }

        public class ChatHub : Hub
        {
            public void Send(string message)
            {
                Clients.All.send(message);
            }
        }
    }
}
namespace SignalROwinHost
{
班级计划
{
静态void Main(字符串[]参数)
{
字符串url=”http://localhost:9000/";
使用(WebApplication.Start(url))
{
WriteLine(“在{0}上运行的服务器”,url);
Console.ReadLine();
}
}
公营创业
{
公共无效配置(IAppBuilder应用程序)
{
app.MapHubs();
}
}
公共类聊天室:聊天室
{
公共无效发送(字符串消息)
{
Clients.All.send(message);
}
}
}
}
Javascript(无代理):


$(函数(){
变量连接=$.hubConnection('http://localhost:9000');
var chat=connection.createhubbroxy('chatHub');
聊天室开启('send',功能(消息){
$('#chat').html($('#chat').html()+“\r\n”+消息);
});
connection.logging=true;
connection.start().done(函数(){
警报(“连接完成”);
$('#sendBtn')。单击(函数(){
invoke('send',$('#message').val());
});
}).fail(函数(param){alert(param);});
});
Javascript(代理):


$(函数(){
var chat=$.connection.chatHub;
chat.client.send=函数(消息){
警报(信息);
};
$.connection.hub.logging=true;
$.connection.hub.url=”http://localhost:9000/signalr";
$.connection.hub.start()
.done(函数(参数){
chat.server.send(“已连接”);
})
.失败(功能(参数){
警报(“无法连接:+param”);
});
});

如果您使用的是SignalR 1.0.0(现在正式发布,您应该这样做),则需要将调用更改为
MapHubs
,以启用跨域请求。这是假设您的网站不是由localhost:9000提供的。我猜不是,因为您正在将url传递到
$.hubConnection

app.MapHubs(new HubConfiguration { EnableCrossDomain = true });

在1.0.0最终发行版之前,CORS默认启用。

我有所有这些功能,它可以在每个浏览器上使用,但在IE 10中不起作用。有什么想法吗?
<script src="http://localhost:9000/signalr/hubs" type="text/javascript"></script>
      <script type="text/javascript">
        $(function () {
            var chat = $.connection.chatHub;
            chat.client.send = function (message) {
                alert(message);
            };

            $.connection.hub.logging = true;

            $.connection.hub.url = "http://localhost:9000/signalr";

            $.connection.hub.start()
                .done(function (param) {
                    chat.server.send("Connected");
                })
                .fail(function (param) {
                    alert("Could not Connect: " + param);
                });
        });

  </script>
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });