Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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 Core_Signalr - Fatal编程技术网

Asp.net core 如何检测信号机连接是否被故意关闭?

Asp.net core 如何检测信号机连接是否被故意关闭?,asp.net-core,signalr,Asp.net Core,Signalr,我正在尝试检测信号器连接是否因为网络问题或故意丢失。我看到了很多解决方案,但它们似乎是针对较旧版本的Aspnet core Signaler的。(它们使用ondisconnected和参数stopcalled)。在我的版本中,我只有ondisconnectedasync,参数Exception Exception始终为null 我正在服务器端使用Microsoft.AspNet.SignalR.Core的2.4.1版。和“@aspnet/signal”:“^1.1.4”在客户端 这是我的代码:

我正在尝试检测信号器连接是否因为网络问题或故意丢失。我看到了很多解决方案,但它们似乎是针对较旧版本的Aspnet core Signaler的。(它们使用ondisconnected和参数stopcalled)。在我的版本中,我只有ondisconnectedasync,参数Exception Exception始终为null

我正在服务器端使用Microsoft.AspNet.SignalR.Core的2.4.1版。和“@aspnet/signal”:“^1.1.4”在客户端

这是我的代码:

public override async Task OnDisconnectedAsync(Exception exception)
        {


            var httpContext = Context.GetHttpContext();
            //get the user that lost connection or is being disconnected.
            var user = users.SingleOrDefault(u => u.ConnectionId == Context.ConnectionId);

            if(user != null && /* if connection was closed deliberately*/ )
            {
                //remove user from the list
                users.Remove(user);

                //log the user out.
                ParticipantController.Logout(user.UserId);
            }

            await base.OnDisconnectedAsync(exception);
        }

有人知道如何实现此功能吗?
我还想知道刷新页面是否也被视为故意断开连接,如果是,我如何将其与实际的选项卡关闭或windows关闭断开连接区分开来。

当出现连接问题时,异常是否仍然为空?是,当刷新、关闭或网络关闭时。原因是什么并不重要。它始终为空。您使用的信号版本错误。好的,但那是在客户端。这是否也会影响服务器端?怎么做@stpaulis几年前,
aspnet/signal
更改为
microsoft/signal
,并且保持了与ASP核心包相同的版本。如果在旧的基础上叠加,则会错过一些重要功能,例如
自动重新连接
,并且可能存在一些漏洞。也许它也能解决你的问题,但我不确定。