tutorial net microsoft framework example aspnet c# asp.net-mvc-5 signalr signalr-hub

net - signalr tutorial c#



“OnDisconnected(): no se encontró un método adecuado para anularlo”-SignalR (2)

Para la versión 2.1.1+ cambiar

public override Task OnDisconnected()

a

public override Task OnDisconnected(bool stopCalled)

He estado intentando implementar una sala de chat siguiendo el tutorial de "Asp.Net SignalR Chat Room" en CodeProject ( http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room ). Sin embargo, me aparece el error "Hubs.ChatHubs.OnDisconnected (): no se ha encontrado ningún método adecuado para anularlo"

Clase de ChatHub:

public class ChatHub : Hub { #region Data Members static List<UserDetail> ConnectedUsers = new List<UserDetail>(); static List<MessageDetail> CurrentMessage = new List<MessageDetail>(); #endregion #region Methods public void Connect(string userName) { var id = Context.ConnectionId; if (ConnectedUsers.Count(x => 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 => x.ConnectionId == toUserId); var fromUser = ConnectedUsers.FirstOrDefault(x => x.ConnectionId == fromUserId); if (toUser != null && 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 => 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 > 100) CurrentMessage.RemoveAt(0); } #endregion }

¿Alguna pista de por qué esto está sucediendo?


Tiene una falta de coincidencia en su dependencia de signalR, cambiaron la firma para OnDisconnected en 2.1.1

Entonces, actualice todos los proyectos a 2.1.1 o reduzca la calificación de todos los proyectos a 2.1.0 y debería funcionar