Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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
Javascript ASP dotnet core webApp:SignalR websocket onclose()在请求后立即调用_Javascript_C#_Asp.net Core_Signalr - Fatal编程技术网

Javascript ASP dotnet core webApp:SignalR websocket onclose()在请求后立即调用

Javascript ASP dotnet core webApp:SignalR websocket onclose()在请求后立即调用,javascript,c#,asp.net-core,signalr,Javascript,C#,Asp.net Core,Signalr,我只是从asp dotnet核心web应用程序中的SignalR开始,并试图获得基本的理解 我已经用一个空项目完成了来自微软的示例,效果很好。然后我尝试将相同的教程集成到现有的web应用程序中。但是在那里,我只能向服务器发送一个请求。收到响应后,页面内容将按预期更新。但是,connection.invoke(…).catch(…)上的错误处理程序立即被调用,其中包含以下信息:error:invokation已取消,因为基础连接已关闭 调用堆栈将我指向signal.js中的webSocket.on

我只是从asp dotnet核心web应用程序中的SignalR开始,并试图获得基本的理解

我已经用一个空项目完成了来自微软的示例,效果很好。然后我尝试将相同的教程集成到现有的web应用程序中。但是在那里,我只能向服务器发送一个请求。收到响应后,页面内容将按预期更新。但是,
connection.invoke(…).catch(…)
上的错误处理程序立即被调用,其中包含以下信息:
error:invokation已取消,因为基础连接已关闭

调用堆栈将我指向
signal.js
中的
webSocket.onclose
函数,但我看不出引发相应事件的原因

将signar.js LogLevel设置为
Trace
后,服务器和客户端的完整调试信息如下:

[2020-12-17T16:03:21.698Z] Trace: (WebSockets transport) sending data. String data of length 76.
[2020-12-17T16:03:21.701Z] Trace: (WebSockets transport) data received. String data of length 60.
Microsoft.AspNetCore.Routing.EndpointMiddleware: Information: Executed endpoint '/chathub'
Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished in 6917.5314ms 101 
[2020-12-17T16:03:21.709Z] Trace: (WebSockets transport) socket closed.
[2020-12-17T16:03:21.709Z] Debug: HttpConnection.stopConnection(undefined) called while in state Connected.
[2020-12-17T16:03:21.710Z] Information: Connection disconnected.
[2020-12-17T16:03:21.710Z] Debug: HubConnection.connectionClosed(undefined) called while in state Connected.
Error: Invocation canceled due to the underlying connection being closed.
此后,我可以重新连接,并且对于一个请求,连接会再次工作。但这不是一个解决办法

我已重写服务器上的OnDisconnectedAsync(异常),并为其设置断点。
exception
参数为null,但
this.Context.ConnectionAborted.IsCancellationRequested
true
。 调用
OnDisconnectedAsync(…)
发生在JS客户端函数成功执行后,结果没有任何问题

由于它在一个全新的项目中工作,我确信它与我现有的web应用程序中的某些内容有关。但我完全不知道它可能是什么。 我已经注释掉了
Startup.cs
中的所有其他内容,并从页面中排除了所有其他JS脚本以进行测试,以避免任何副作用。我现在应该有与示例中基本相同的设置。但这种行为并没有改变

我不希望有具体的解决方案,因为这可能是一个非常具体的问题。但是,如果有人知道我应该从哪里开始寻找问题,这已经很有帮助了

编辑:
在进一步研究并调试
signal.js
之后,我发现
webSocket.onclose(event)
是在
processIncomingData(…)
函数完成后调用的。事件代码为1000,根据平均值
正常关闭
。但是我仍然找不到谁发起了关闭调用…

Hi@Buchter你调用了哪个hub方法,你能告诉我们吗?我从
ChatHub
调用
SendMessage
方法,就像在MS示例中一样。然后在我的JavaScript中的
ReceiveMessage
处理程序中对结果进行评估。然后断开连接。您好@Buchter,您调用了哪个集线器方法,您能告诉我们吗?我从
ChatHub
调用
SendMessage
方法,就像在MS示例中一样。然后在我的JavaScript中的
ReceiveMessage
处理程序中对结果进行评估。然后断开连接。