SignalR .Net Core 3.1 无法通过服务 class 在 SendAsync 方法中发送对象

SignalR .Net Core 3.1 unable to send object in SendAsync method from service class

以前我使用的是 .Net Core 2.2,我能够使用集线器上下文和 SendAsync 方法从服务 class 向前端 Web 客户端发送 json 对象。将我的项目框架升级到 3.1 后,我遇到了问题。如果我使用 json 对象调用 SendAsync 方法,它将遇到错误,指出“{”不支持集合类型 'Newtonsoft.Json.Linq.JObject'。“}”,如果我发送任何其他 class 对象,它将直接转到 OnDisconnected.

我使用的方法示例

使用 Json 对象: await _hubContext.Clients.Group(groupName).SendAsync("NotificationResponse", jsonObject);

使用 Class 对象:等待 _hubContext.Clients.Group(groupName).SendAsync("NotificationResponse", notificationObject);

我试过直接从集线器发送对象,我能够发送普通的 class 对象,但不能发送 json 对象。我对我的项目进行了测试,还从本教程中进行了采样:https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-3.1&tabs=visual-studio

我在 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

这样做后问题就解决了。