#c# #.net-5 #signalr-hub
Вопрос:
Мой рабочий сигнал ASP.NET Служба Windows Core 5 с простой строковой полезной нагрузкой (или еще большим количеством параметров типа значения) больше не работает, когда я изменяю ее на (простой) сложный объект («CommonMessage» в моем случае). Из того, что я прочитал, это должно сработать из коробки. Метод «SendCommonMessage» больше не вызывается, и я не получаю никаких ошибок. Что я упускаю? Нет ли способа отладить/отобразить ошибку? (В ASP.NET Служба вызывается приложением WPF Core 5.)
public class CommonMessageHub : Hub
{
public async Task SendCommonMessage(CommonMessage commonMessage)
{
await Clients.All.SendAsync("ReceiveCommonMessage", commonMessage);
}
}
public class CommonMessage
{
public int MessageType { get; set; }
public int Id { get; set; }
public string Text { get; set; }
}
Вызывающий абонент (приложение WPF) выглядит так:
public class CommonMessageService
{
public CommonMessageService(HubConnection connection)
{
_connection = connection;
_connection.On<CommonMessage>("ReceiveCommonMessage", commonMessage => CommonMessageReceived?.Invoke(commonMessage));
}
private readonly HubConnection _connection;
public event Action<CommonMessage> CommonMessageReceived;
public async Task Connect()
{
await _connection.StartAsync();
}
public async Task SendCommonMessage(CommonMessage commonMessage)
{
await _connection.SendAsync("SendCommonMessage", commonMessage);
}
}
Комментарии:
1. Где вы на самом деле проводите мероприятие?
CommonMessageReceived
Как вы регистрируетесьICommonMessageService
?2. @Andy: Событие используется в ViewModel, и интерфейс в настоящее время не нужен, я удалил его. Я реализовал точную копию 1:1, которая использует строку, и она работает. Проблема должна заключаться в сложном объекте «CommonMessage». Метод SendCommonMessage() в приложении WPF вызывается, но вызов не достигает функции SendCommonMessage() в службе.
3. Есть ли у вас какие — либо признаки ошибки в журналах?
4. @Ihusaan: В каких журналах? Я добавил журнал обслуживания, если вы это имеете в виду. Правильно работает только «тестовый» концентратор (со строковой полезной нагрузкой), два других не работают.