Я получаю исключение, что «соединение не установлено», когда я пытаюсь вызвать метод класса 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();
}
}
Это выглядит совсем по-другому, так как я настроил SignalR, поэтому, пожалуйста, простите меня, если я задам некоторые основные вопросы. Может ли SendNotificationToUser отправлять уведомление от концентратора клиенту? (клиент означает клиентскую систему). Что такое «128» пользователя, это идентификатор пользователя или идентификатор соединения или сеанса? – Jeff
«128» - это идентификатор пользователя только для тестирования. Я жестко закодировал его. Да, вы правы. SendNotificationToUser - это метод, используемый для отправки уведомления клиенту через Hub.Этот метод принимает два параметра SendNotificationToUser (строка touser, строковое сообщение). –
Я не думаю, что вы действительно получаете экземпляр Хаба. Я думаю, вам нужно сделать что-то вроде: var context = GlobalHost.ConnectionManager.GetHubContext(); Затем: context.Clients.Client (id) .SendNotificationToUser() –
Jeff