SignalR:协商请求期间出错:undefined
问题描述:
我一直在试图获得一个javascript信号-r客户端与自托管的owin服务器工作。我遇到了这个问题。我已经尝试了两个代理和没有代理方法,都带有与错误“SignalR:协商请求期间的错误:未定义”相同的结果。SignalR:协商请求期间出错: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);
}
}
}
}
的Javascript(无代理):
<script type="text/javascript">
$(function() {
var connection = $.hubConnection('http://localhost:9000');
var chat = connection.createHubProxy('chatHub');
chat.on('send', function (message) {
$('#chat').html($('#chat').html() + "\r\n" + message);
});
connection.logging = true;
connection.start().done(function() {
alert("Connection Complete");
$('#sendBtn').click(function() {
chat.invoke('send', $('#message').val());
});
}).fail(function (param) { alert(param); });
});
</script>
使用Javascript(代理):
<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>
答
如果您正在使用SignalR 1.0.0(这您应该自从现在正式发布以来),您需要将呼叫更改为MapHubs
以启用跨域请求。这是假设您的网站是而不是由localhost:9000提供。我猜这是因为你传递的网址为$.hubConnection
。
app.MapHubs(new HubConfiguration { EnableCrossDomain = true });
在最终版本1.0.0之前,默认情况下启用了CORS。
这正是我所错过的,谢谢。 – JMorgan 2013-02-21 14:46:26
我拥有所有这些东西,它适用于所有浏览器,但在IE 10中不起作用。任何想法? – Bhavin 2013-04-09 18:04:38