在Chrome中,当集线器代码广播到客户端时,Signalr2.1.1集线器客户端到集线器方法提前终止连接

在Chrome中,当集线器代码广播到客户端时,Signalr2.1.1集线器客户端到集线器方法提前终止连接,signalr,signalr-hub,Signalr,Signalr Hub,我有一个Signalr2.1.1强类型集线器,其中客户端调用服务器集线器方法,并在该方法中向客户端发送广播(在我的测试用例中,只有调用方被调用) 集线器方法没有返回值(异步公共任务测试())。从服务器端看,hub方法似乎不会抛出异常。在客户端,我得到错误:解析响应时失败:{“C”:“d-43366b-A,0 | B,1 | C,2 | d,0 | E,0”,“M”:[{和清除中心调用回调时出错:在收到调用结果之前连接断开。 在响应完全发送之前,连接似乎已被终止 问题发生在Windows7上的Ch

我有一个Signalr2.1.1强类型集线器,其中客户端调用服务器集线器方法,并在该方法中向客户端发送广播(在我的测试用例中,只有调用方被调用)

集线器方法没有返回值(
异步公共任务测试()
)。从服务器端看,hub方法似乎不会抛出异常。在客户端,我得到
错误:解析响应时失败:{“C”:“d-43366b-A,0 | B,1 | C,2 | d,0 | E,0”,“M”:[{
清除中心调用回调时出错:在收到调用结果之前连接断开。

在响应完全发送之前,连接似乎已被终止

问题发生在Windows7上的Chrome上,而不是IE11上

简化轮毂类
公共类信使集线器:集线器,IMessengerHub
{
异步任务IMessengerHub.TestActivityNotification()
{
ConnectionInfo信息=_ConnectionInfo[_hub.Context.ConnectionId];
活动=新活动
{
ActivityId=Guid.NewGuid(),
ContactId=info.UserId,
DateTime=DateTime.UtcNow,
DeviceId=info.DeviceId,
种类=活动种类。信息,
SubKind=ActivitySubKind.MessageSent
};
//这段代码实际上是另一种方法,只是为了演示而简化
等待任务任务=任务。运行(()=>
{
//我想问题可能出在这些团体身上。。。
//Clients.Group(userId.ToString()).OnActivity(activity);
foreach(ConnectionInfo.Values.Where中的ConnectionInfo信息(ci=>ci.UserId==UserId))
{
Clients.Client(info.ConnectionId).OnActivity(activity);
}
});
}
}
如果我把上面对OnActivity的调用注释掉,问题就消失了

JavaScript初始化代码 这是Razor页面中的内容,请注意Razor语法

//-----------------------------------------------------------------------------
//信号机初始化
//-----------------------------------------------------------------------------
$(函数(){
// ------------------------------------------
//设置中心的客户端
// ------------------------------------------
var messengerHub=$.connection.messengerHub;
var hub=$.connection.hub;
radarMessenger.hub=信使中心;
雷达信号机={
状态转换:{0:'正在连接',1:'已连接',2:'正在重新连接',4:'已断开连接'}
};
Messenger Hub.client.onActivity=雷达传感器.onActivity;
// ------------------------------------------
//连接到集线器
// ------------------------------------------
@{
活动上下文=SecurityUtils.GetContext();
}
hub.qs={
deviceId:“@context.deviceId”,
用户标识:'@context.ContactId'
};
hub.logging=true;
正在启动(函数(){
控制台日志(“信号机:启动”);
});
接收到集线器(功能(数据){
log(“信号器:接收:”+JSON.stringify(数据));
});
hub.connectionSlow(函数(){
日志(“信号器:连接速度慢”);
});
hub.重新连接(函数(){
控制台日志(“信号机:重新连接”);
});
hub.stateChanged(函数(数据){
console.log(“信号器:状态从”+
radarMessenger.Signal.stateConversion[data.oldState]+“到”+
radarMessenger.signar.stateconformation[data.newState]);
});
hub.disconnected(函数(){
控制台日志(“信号机:断开”);
});
hub.error(函数(错误){
日志(“信号器:错误:+错误”);
});
hub.start()
.done(函数(){console.log('现在已连接,连接ID='+hub.ID);})
.fail(函数(){console.log('cannotconnect!');});
$(“#TestActivityNotification”)。单击(函数(){
log('TestActivityNotification');
messengerHub.server.testActivityNotification()
.done(函数(){
log(“调用testActivityNotification成功”);
})
.失败(功能(错误){
log(“testActivityNotification中的错误:+错误”);
});
});
});
Chrome开发控制台
信号器:状态从断开更改为连接105b20f2-2a6a-46da-83ae-35c32b82eba1?存档=真:397
SignalR:客户端订阅了集线器“Messenger集线器”。jquery.SignalR-2.1.1.js:81
信号机:启动105b20f2-2a6a-46da-83ae-35c32b82eba1?存档=真:380
信号器:与“/securemessaging/信号器/协商?客户端协议=1.4&deviceId=a60aea91-1d79-4881-943d-1BF3CB8BA4E&userId=2deb491a-c4f6-4f99-b653-aac65450c3db&connectionData=%5B%7B%22name%22%3A%22messengerhub%22%7D%5D”。jquery.SignalR-2.1.1.js:81
信号器:正在尝试连接到SSE端点的https://dev01.myradarconnect.com:13004/securemessaging/signalr/connect?tran…Uo10Wpetj&connectionData=%5B%7B%22name%22%3A%22messengerhub%22%7D%5D&tid=7'.jquery.signalR-2.1.1.js:81
SignalR:EventSource已连接。jquery.SignalR-2.1.1.js:81
SignalR:serverSentEvents传输已选中。正在启动启动请求。jquery.SignalR-2.1.1.js:81
SignalR:启动请求成功。正在转换为已连接状态。jquery.SignalR-2.1.1.js:81
信号器:现在监视保持活动状态,警告超时为13333.3332,连接丢失超时为20000。jquery.SignalR-2.1.1.js:81
信号器:状态从连接更改为已连接105b20f2-2a6a-46da-83ae-35c32b82eba1?存档=真:397
现在已连接,连接ID=64188d16-5abe-4e67-9393-10eb59862f82 105b20f2-2a6a-46da-83ae-35c32b82eba1?存档=True:411
TestActivityNotification 105b20f2-2a6a-46da-83ae-35c32b82eba1?存档=真:
SignalR: Received: {"$id":"4","$type":"Microsoft.AspNet.SignalR.Hubs.HubResponse, Microsoft.AspNet.SignalR.Core","I":"0"} 105b20f2-2a6a-46da-83ae-35c32b82eba1?Archived=True:384