2014-01-30 15 views
6

Ich bin auf einem SignalR Projekt arbeiten und ich habe manchmal dieses ProblemC# - SignalR - Fehler beim Schließen des websocket

Fehler bei der websocket endet: System.Net.WebSockets.WebSocketException (0x80070006): der Griff ist ungültig

ich denke, dass das Problem in diesem Teil meines Codes verknüpft ist:

var currentHub = GlobalHost.ConnectionManager.GetHubContext<HubManager>(); 
currentHub.Groups.Remove(userConnectionId, roomName); 

Haben Sie eine Idee von diesem Problem, wie kann ich es beheben?

Dank

+0

Ich sehe diese gelegentlich in meinen "Unit" Tests (wo ich die Verbindungen nicht sauber schließe). –

Antwort

1

ich hatte das gleiche Problem haben, passiert Dies begann, als ich eine SQL-Backplane zu signalR hinzugefügt,

Es hat mit der „Frische“ der Nabe Kontext zu tun, was ich tat dies ist :

/// <summary> 
    /// In case a backplane is used (in case of load balancer) , the instance should always be taken fresh 
    /// if no backplane is used no need to refresh the instance on each invocation 
    public class HubContextService 
    { 
     bool BackplaneUsed { get; set; } 
     IHubContext _context = null; 

     public HubContextService(bool isBackPlaneUsed = true) 
     { 
      BackplaneUsed = isBackPlaneUsed; 
     } 

     public IHubContext HubContext 
     { 
      get 
      { 
       if (BackplaneUsed) 
       { 
        return GlobalHost.ConnectionManager.GetHubContext<HubManager>(); 
       } 
       else 
       { 
        if (_context == null) 
        { 
         _context = GlobalHost.ConnectionManager.GetHubContext<HubManager>(); 
        } 
        return _context; 
       } 
      } 
      set 
      { 
       _context = value; 
      } 
     } 
    } 
Verwandte Themen