title: "OnDisconnected(): no suitable method found to override" - SignalR
body: <p>I've been trying to implement a chat room by following the "Asp.Net SignalR Chat Room" tutorial on CodeProject (<a href="http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room" rel="noreferrer">http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room</a>). However, I'm getting the error "Hubs.ChatHubs.OnDisconnected(): no suitable method found to override"</p>
  
  <p>ChatHub class:</p>
  
  <pre><code>public class ChatHub : Hub
  {
      #region Data Members
  
      static List&lt;UserDetail&gt; ConnectedUsers = new List&lt;UserDetail&gt;();
      static List&lt;MessageDetail&gt; CurrentMessage = new List&lt;MessageDetail&gt;();
  
      #endregion
  
      #region Methods
  
      public void Connect(string userName)
      {
          var id = Context.ConnectionId;
  
  
          if (ConnectedUsers.Count(x =&gt; x.ConnectionId == id) == 0)
          {
              ConnectedUsers.Add(new UserDetail { ConnectionId = id, UserName = userName });
  
              // send to caller
              Clients.Caller.onConnected(id, userName, ConnectedUsers, CurrentMessage);
  
              // send to all except caller client
              Clients.AllExcept(id).onNewUserConnected(id, userName);
  
          }
  
      }
  
      public void SendMessageToAll(string userName, string message)
      {
          // store last 100 messages in cache
          AddMessageinCache(userName, message);
  
          // Broad cast message
          Clients.All.messageReceived(userName, message);
      }
  
      public void SendPrivateMessage(string toUserId, string message)
      {
  
          string fromUserId = Context.ConnectionId;
  
          var toUser = ConnectedUsers.FirstOrDefault(x =&gt; x.ConnectionId == toUserId);
          var fromUser = ConnectedUsers.FirstOrDefault(x =&gt; x.ConnectionId == fromUserId);
  
          if (toUser != null &amp;&amp; fromUser != null)
          {
              // send to 
              Clients.Client(toUserId).sendPrivateMessage(fromUserId, fromUser.UserName, message);
  
              // send to caller user
              Clients.Caller.sendPrivateMessage(toUserId, fromUser.UserName, message);
          }
  
      }
  
      public override System.Threading.Tasks.Task OnDisconnected()
      {
          var item = ConnectedUsers.FirstOrDefault(x =&gt; x.ConnectionId == Context.ConnectionId);
          if (item != null)
          {
              ConnectedUsers.Remove(item);
  
              var id = Context.ConnectionId;
              Clients.All.onUserDisconnected(id, item.UserName);
  
          }
  
          return base.OnDisconnected();
      }
  
  
      #endregion
  
      #region private Messages
  
      private void AddMessageinCache(string userName, string message)
      {
          CurrentMessage.Add(new MessageDetail { UserName = userName, Message = message });
  
          if (CurrentMessage.Count &gt; 100)
              CurrentMessage.RemoveAt(0);
      }
  
      #endregion
  
  }
  </code></pre>
  
  <p>Any clues as to why this is happening?</p>