2016-10-27 1 views
2

Я создал консольное приложение .net core и включил пакет Netset ServiceStack.Redis.Core v1.0.23. У меня также есть настройка redis sentinel, работающая локально. Когда я пытаюсь подключиться к redis с использованием метода дозорного соединения, приложение зависает на sentinel.start(). Ошибок нет.Использование ServiceStack Redis от ядра .net и подключение к настройке Sentinel

Если я создаю то же приложение, используя консольное приложение Windows, используя стандартный проект Windows C#, и в том числе пакет ServiceStack.Redis v4.5.4 nuget, тот же код соединения работает нормально.

Мне также удалось подключиться из приложения .net с использованием одного экземпляра redis, но не использовать дозорный.

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

Код, используемый, чтобы попытаться подключиться:

var sentinelHosts = new[] { "127.0.0.1:26380", "127.0.0.1:26381", "127.0.0.1:26382" }; 
var sentinel = new RedisSentinel(sentinelHosts, masterName: "mymaster"); 

var clientManager = sentinel.Start(); 
+0

Вы можете делиться конфигурационными файлами для своих серверов redis/sentinnel? –

+0

Я использовал настройку с https://github.com/ServiceStack/redis-config без каких-либо изменений. – riml

+0

Я смог воспроизвести его, давайте посмотрим, что можно сделать –

ответ

1

Это ошибка, которая должна быть исправлена ​​с this commit. sentinel.Start() делает вызов RedisPubSubServer, который блокирует текущий поток на .NET Core, поэтому управление не возвращается и не зависает. Это изменение будет доступно на nuget с пакетом ServiceStack.Redis.Core v1.0.25.