Пакет сообщений выдает ошибку, когда при вызове метода клиента Signalr не удается найти соответствующий конструктор. тип: Newtonsoft. Json .Linq.JProperty - PullRequest
0 голосов
/ 27 мая 2020

У меня есть сигнальное приложение с включенным протоколом пакета сообщений. Когда у клиента, подключающегося к моему концентратору, включен пакет сообщений, все работает хорошо. Когда я вызываю метод клиента (с отключенным пакетом сообщений), передавая в качестве параметра объект, содержащий список объектов, пакет сообщений не генерирует исключение с сообщением:

не удается найти согласованный конструктор. тип: 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();

Я пытался добавить настраиваемые преобразователи в пакет сообщений, но не смог решить эту проблему. Кто-нибудь когда-либо сталкивался с этой проблемой ? или делать есть ли у кого-нибудь решение?

...