Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 信令Asp.Net核心发送异步挂起_Asp.net Core_Signalr_Signalr Hub_Signalr.client_Asp.net Core Signalr - Fatal编程技术网

Asp.net core 信令Asp.Net核心发送异步挂起

Asp.net core 信令Asp.Net核心发送异步挂起,asp.net-core,signalr,signalr-hub,signalr.client,asp.net-core-signalr,Asp.net Core,Signalr,Signalr Hub,Signalr.client,Asp.net Core Signalr,这是第二次了。我相信触发错误的原因是我试图更新我的MongoDb服务器,但我仍然不知道为什么会发生这种情况,我想找出原因 基本上,我使用以下命令将json字符串数据从C#脚本发送到带有Signalr的前端: \u hubContext.Clients.All.SendAsync(“ReceiveMail”,json); 问题是,我的脚本一直在广播此消息(没有任何错误或问题),但我的客户端没有收到它(即使此广播已运行数周…)。当我将广播的名称更改为其他名称时,数据就会完美地传送到客户端 例如:

这是第二次了。我相信触发错误的原因是我试图更新我的MongoDb服务器,但我仍然不知道为什么会发生这种情况,我想找出原因

基本上,我使用以下命令将json字符串数据从C#脚本发送到带有Signalr的前端:

\u hubContext.Clients.All.SendAsync(“ReceiveMail”,json);
问题是,我的脚本一直在广播此消息(没有任何错误或问题),但我的客户端没有收到它(即使此广播已运行数周…)。当我将广播的名称更改为其他名称时,数据就会完美地传送到客户端

例如:

//此广播连续几周运行良好,但突然停止运行(无错误)
_hubContext.Clients.All.SendAsync(“ReceiveMail”,json);
//将上面的广播更改为此,广播再次运行良好
_hubContext.Clients.All.SendAsync(“ListenForMail”,json);
TS代码:

constructor(){
this.hubConnection=new signal.HubConnectionBuilder()
.withUrl('http://localhost:57697/chat')
.build();
这是hubConnection
.start()
.然后(()=>this.table())
.catch(err=>console.log('建立连接时出错:(');
this.hubConnection.on('ReceiveMail',(mailJson:string)=>{
this.loadEmail(mailJson);
});
this.hubConnection.on('ReceiveConnection',(msg:string)=>{
log('Connection:'+msg);
});
}
有人了解这个问题吗?

C代码正在调用的方法名称与您在TS代码中侦听的方法不匹配-但我假设这是一个输入错误。如果不是,那么您需要确保
。on
方法使用与C代码相同的方法名称

您需要更改的另一件事是连接的起始位置,例如

constructor(){
this.hubConnection=new signal.HubConnectionBuilder()
.withUrl('http://localhost:57697/chat')
.build();
this.hubConnection.on('RetrieveMail',(mailJson:string)=>{
this.loadEmail(mailJson);
});
this.hubConnection.on('ReceiveConnection',(msg:string)=>{
log('Connection:'+msg);
});
这是hubConnection
.start()
.然后(()=>this.table())
.catch(err=>console.log('建立连接时出错:(');
}

在上面的代码中,我移动了
.start()
在注册方法上的
后调用。您应该这样做,因为
hubconnection
可以在注册处理程序之前开始侦听消息,从而导致竞态条件。如果
上的
处理程序尚未完成注册,则不会收到发送的任何消息。

您可以发布您的JS代码吗s正在侦听消息,请?@SimplyGed已用TS代码更新抱歉,不是一个输入错误,我刚刚多次更改名称以修复错误。在TS和C#脚本中,该函数将命名为“RetrieveMail”、“ReceiveMail”或“ListenForMail”。好的,谢谢。注册“on”后,我将尝试启动连接就像你说的那样!