SignalR .Net Core 3.1 не может отправить объект в методе SendAsync из класса службы

Раньше я использовал .Net Core 2.2, я мог отправить объект json из класса службы, используя контекст концентратора и метод SendAsync, на интерфейсный веб-клиент. У меня возникли проблемы после того, как я обновил структуру моего проекта до 3.1. Если я вызываю метод SendAsync с помощью объекта json, он выдает ошибку с сообщением "{" Тип коллекции 'Newtonsoft.Json.Linq.JObject' не поддерживается. "}", если я отправлю любой другой объект класса он напрямую перейдет в OnDisconnected.

Пример метода, который я использую

Использование объекта Json: await _hubContext.Clients.Group (groupName) .SendAsync ("NotificationResponse", jsonObject);

Использование объекта класса: await _hubContext.Clients.Group (groupName) .SendAsync ("NotificationResponse", notificationObject);

Я пробовал отправлять объект прямо из хаба, мне удалось отправить обычный объект класса, но не объект json. Я провел тестирование своего проекта, а также образец из этого руководства: https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio


person takoi    schedule 12.05.2020    source источник


Ответы (1)


Я разместил этот вопрос на github и получил ответ от BrennanConroy. Большое спасибо !

Его ответ был:

2.1 использовала Newtonsoft для внутреннего использования для Json, 3.1 использует System.Text.Json. Если вы используете функции, которые не работают с System.Text.Json, вы можете вернуться к Newtonsoft https://docs.microsoft.com/aspnet/core/migration/22-to-30?view=aspnetcore-3.1&tabs=visual-studio#switch-to-newtonsoftjson

После этого проблема была решена.

person takoi    schedule 12.05.2020
comment
Вы ссылались на использование Microsoft.Extensions.DependencyInjection после установки Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson? Пришлось сделать это для клиента. - person Gregory Bologna; 30.04.2021
comment
@GregoryBologna для этого проекта я работал над бэкэнд / серверной частью. клиентское решение было сделано кем-то другим, но я не думаю, что добавил это как ссылку - person takoi; 19.05.2021