SignalR (v2.2.0) OnDisconnected установить пользователя в автономном режиме

Я использую следующий код, чтобы добавить пользователя в группу и сохранить пользователя в БД для этой конкретной группы, используя следующий код.

SERVER:

  public class ChatHub : Hub
{


    public async Task JoinRoom(string user_Id, string room_Id, string user_Name)
    {
        AddLoginUser(room_Id, this.Context.ConnectionId, user_Id);
        await this.Groups.Add(this.Context.ConnectionId, room_Id);
    }


    public void Connect(string user_Id, string room_Id, string user_Name)
    {
        var id = Context.ConnectionId;

        Clients.Caller.onConnected(id, user_Name, GetRoomUser(room_Id), GetRoomMessage(room_Id));

        // send to all in group to update user list
        Clients.OthersInGroup(room_Id).onNewUserConnected(id, user_Name);
    }
  public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
    {

        using (DataContext dc = new DataContext())
        {
            var item = dc.LoggedInUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);
            if (item != null)
            {
                item.Connected = false;
                dc.SubmitChanges();

                Clients.OthersInGroup(item.RoomID.ToString()).onUserDisconnected(Context.ConnectionId, item.UserMaster.User_Name);
            }

            return base.OnDisconnected(stopCalled);
        }
    }
   }

 private void AddLoginUser(string room_Id, string connection_Id, string user_Id)
    {
        using (DataContext dc = new DataContext())
        {
            var checkUserLogedIn = (from user in dc.LoggedInUsers
                                    where (user.RoomID == Convert.ToInt32(room_Id) && user.UserID == Convert.ToInt32(user_Id))
                                    select user).SingleOrDefault();
            if (checkUserLogedIn == null)
            {
                LoggedInUser objLoggedInUser = new LoggedInUser();
                objLoggedInUser.ConnectionId = connection_Id;
                objLoggedInUser.UserID = Convert.ToInt32(user_Id);
                objLoggedInUser.RoomID = Convert.ToInt32(room_Id);
                objLoggedInUser.Connected = true;
                dc.LoggedInUsers.InsertOnSubmit(objLoggedInUser);
                dc.SubmitChanges();
            }
            else
            {
                if (!checkUserLogedIn.Connected)
                {
                    checkUserLogedIn.Connected = true;
                    dc.SubmitChanges();
                }
            }
        }
    }

Проблема:

Предположим, я вошел в систему с идентификатором пользователя = 1 для roomid = 1 и contextid = 123asd. Если я обновлю свое окно, контекст изменится, и теперь, если я закрываю вкладку браузера, следующий запрос:

var item = dc.LoggedInUsers.FirstOrDefault(x => x.ConnectionId == Context.ConnectionId);

не узнать пользователя по последней версии connectionid, потому что когда я сохранил пользователя на connect в то время, connectionid был другим.

Как я могу установить статус подключения для конкретного пользователя на событие отключения.

Заранее спасибо.

Ответы на вопрос(1)

Ваш ответ на вопрос