У меня есть сигнальное приложение с включенным протоколом пакета сообщений. Когда у клиента, подключающегося к моему концентратору, включен пакет сообщений, все работает хорошо. Когда я вызываю метод клиента (с отключенным пакетом сообщений), передавая в качестве параметра объект, содержащий список объектов, пакет сообщений не генерирует исключение с сообщением:
не удается найти согласованный конструктор. тип: Newtonsoft. Json .Linq.JProperty
stacktrace показывает, что это исключение было выброшено через объединительную панель Redis, настроенную с помощью signalr
Microsoft.AspNetCore. SignalR.Protocol.MessagePackHubProtocol.GetMessageBytes (сообщение HubMessage) в Microsoft.AspNetCore.SignalR.SerializedHubMessage.GetSerializedMessage (протокол IHubProtocol) в потоке Microsoft.AspNetCore.SignalR.Redis.Internal.WhiteSignalRedis.Internal. .SignalR.Redis.Internal.RedisProtocol.WriteInvocation (String methodName, Object [] args, IReadOnlyList 1 excludedConnectionIds)
at Microsoft.AspNetCore.SignalR.Redis.RedisHubLifetimeManager
1.SendGroupExceptAsyn c (String groupName, String methodName, Object [] args, IReadOnlyationList`1 excludedConnectionToken) 1011 *
Вот как я добавил пакет сообщений и Redis с помощью signalr:
services.AddSignalR((options) =>
{
options.MaximumReceiveMessageSize = 5242880;
options.EnableDetailedErrors = true;
})
.AddRedis(Configuration.GetConnectionString("RedisCache"))
.AddNewtonsoftJsonProtocol()
.AddMessagePackProtocol();
Я пытался добавить настраиваемые преобразователи в пакет сообщений, но не смог решить эту проблему. Кто-нибудь когда-либо сталкивался с этой проблемой ? или делать есть ли у кого-нибудь решение?