2014-01-30 2 views
6

Я работаю над проектом SignalR и я иногда эту проблемуC# - SignalR - Ошибка при закрытии WebSocket

Ошибка при закрытии WebSocket: System.Net.WebSockets.WebSocketException (0x80070006): ручка недействителен

Я думаю, что проблема связана с этой частью моего кода:

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

У вас есть представление об этой проблеме, как я могу ее исправить?

Благодаря

+0

Я иногда вижу это в своих «единичных» тестах (где я не закрываю соединения чисто). –

ответ

1

Я была такая же проблема, Это начало происходить, когда я добавил SQL Backplane к signalR,

Это связано с «Свежесть» контекста хаба, что я сделал это за :

/// <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; 
      } 
     } 
    } 
Смежные вопросы