当混合应用连接到SignalR Hub时,获取'ConnectionId格式不正确'
问题描述:
我在网上做了大量的研究,但找不到解决方案。我在WebAPI后端创建了一个SignalR集线器并启用了CORS功能。当混合应用连接到SignalR Hub时,获取'ConnectionId格式不正确'
我也有一个客户端(Ionic)应用程序尝试连接到SignalR中心进行实时聊天。问题是,当混合应用程序试图连接到SignalR集线器时,我得到
ConnectionId的格式不正确。
我得到OnDisconnected
事件在SignalR集线器,但不是OnConnected
事件!
这是我的客户端代码(离子):
- 本地主机:64965/signalr是我SignalR毂
- SignalR代理也localhost上产生:64965/signalr /集线器
var signalr_chatHub = $.connection.ChatHub;
signalr_chatHub.client.welcomeMessage = function (message) {
console.log('WelcomeMessage', message);
};
$.connection.hub.url = "http://localhost:64965/signalr";
$.connection.hub.logging = true;
$.connection.hub.start().done(function() {
console.log('signal connection connected');
}).fail(function (err) {
console.log('Could not Connect!', err);
});
Chrome控制台错误:
public class ChatHub : Hub<IChat>
{
public override Task OnConnected()
{
var connectionId = Context.ConnectionId;
return base.OnConnected();
}
public override Task OnDisconnected(bool stopCalled)
{
var connectionId = Context.ConnectionId;
return base.OnDisconnected(stopCalled);
}
public override Task OnReconnected()
{
return base.OnReconnected();
}
public void WelcomeMessage()
{
Clients.All.NewMessage("Welcome");
}
}
答
Cordova有什么可能吗?
发生这种情况的原因是因为涟漪会创建一个“跨域代理”,这会从signalR抓取所有生成的uri,并且会错误地对部件进行编码。
解决方法是:设置波纹,设置=>跨域代理为 “禁用”
下面是一个代理请求的一个例子,请注意HTTP%3a8080 ...:
这个bug花了我5个小时的生命,该死的他们小河马。
我也遇到同样的错误,但仍然无法找到合适的解决方案。 – Sutirth
你见过这个吗? http://stackoverflow.com/questions/32762303/error-400-bad-request-from-visual-studio-2015-ripple –