2013-11-07 3 views
0

Я получаю исключение, что «соединение не установлено», когда я пытаюсь вызвать метод класса hub с использованием IHubProxy, и я не могу понять проблему. Соединение выполнено успешно, но следующая строка кода выдает ошибку.SignalR Exception: Соединение не установлено

hubProxy.Invoke("SendNotificationToUser", new object[] { touser, message }).ContinueWith(task => 
       { 
        if (task.IsFaulted && task.Exception != null) 
        { 
         // log error 
        } 
       }); 

вот мой полный код ..

[WebMethod] 
     public static void NotfTest(string message) 
     { 
      var hubConnection = new HubConnection("http://localhost:3052/CollegeBuilder/"); 
      IHubProxy hubProxy = hubConnection.CreateHubProxy("NotificationHub"); 
      var touser = "128"; 
      try 
      { 
       lock (hubConnection) 
       { 
        if (hubConnection.State == Microsoft.AspNet.SignalR.Client.ConnectionState.Disconnected) 
        { 
         hubConnection.Start().Wait(2000); 
        } 
       } 

       hubProxy.Invoke("SendNotificationToUser", new object[] { touser, message }).ContinueWith(task => 
       { 
        if (task.IsFaulted && task.Exception != null) 
        { 
         // log error 
        } 
       }); ; 
      } 
      finally 
      { 
       hubConnection.Stop(); 
      } 
     } 
+0

Это выглядит совсем по-другому, так как я настроил SignalR, поэтому, пожалуйста, простите меня, если я задам некоторые основные вопросы. Может ли SendNotificationToUser отправлять уведомление от концентратора клиенту? (клиент означает клиентскую систему). Что такое «128» пользователя, это идентификатор пользователя или идентификатор соединения или сеанса? – Jeff

+0

«128» - это идентификатор пользователя только для тестирования. Я жестко закодировал его. Да, вы правы. SendNotificationToUser - это метод, используемый для отправки уведомления клиенту через Hub.Этот метод принимает два параметра SendNotificationToUser (строка touser, строковое сообщение). –

+0

Я не думаю, что вы действительно получаете экземпляр Хаба. Я думаю, вам нужно сделать что-то вроде: var context = GlobalHost.ConnectionManager.GetHubContext (); Затем: context.Clients.Client (id) .SendNotificationToUser() – Jeff

ответ

Смежные вопросы