StackExchange.Red не может подключиться к Mono в Mac OS X

Я пытаюсь запустить очень простой клиент Redis на Mono в Mac OS X со следующими параметрами:

var configOptions = new ConfigurationOptions() 
{
    EndPoints =
{
    { "localhost", 6379 },
},
ResolveDns = true,
KeepAlive = 180
};
StringWriter sw = new StringWriter();
ConnectionMultiplexer.Connect(configOptions, tw);

Не удается подключиться. Вот след:

localhost:6379,keepAlive=180,resolveDns=True

Using DNS to resolve 'localhost'...
'localhost' => 127.0.0.1
1 unique nodes specified
Requesting tie-break from 127.0.0.1:6379 > __Booksleeve_TieBreak...
Allowing endpoints 00:00:01 to respond...
127.0.0.1:6379 faulted: UnableToResolvePhysicalConnection on PING
127.0.0.1:6379 failed to nominate (Faulted)
> UnableToResolvePhysicalConnection on GET
No masters detected
127.0.0.1:6379: Standalone v2.0.0, master; keep-alive: 00:03:00; int: Connecting; sub: Connecting; not in use: DidNotRespond
127.0.0.1:6379: int ops=0, qu=0, qs=0, qc=1, wr=0, async=1, socks=2; sub ops=0, qu=0, qs=0, qc=0, wr=0, socks=1
Circular op-count snapshot; int: 0 (0.00 ops/s; spans 10s); sub: 0 (0.00 ops/s; spans 10s)
Sync timeouts: 0; fire and forget: 0; last heartbeat: -1s ago
Starting heartbeat...

Я пробовал с ResolveDNS и без него и напрямую указывал IP-адрес. Пробовал также несколько портов. Сервер запущен и доступен по redis-cli.

StackExchange.Redis version = "1.0.289" targetFramework = "net45"

Redis-64 2.8.9

Обновлять

StackExchange.Redis version = "1.0.297" targetFramework = "net45", та же проблема, но другой журнал

локальный: 6666, keepAlive = 180, resolveDns = True

Using DNS to resolve 'localhost'...
'localhost' => 127.0.0.1
1 unique nodes specified
Requesting tie-break from 127.0.0.1:6666 > __Booksleeve_TieBreak...
Allowing endpoints 00:00:05 to respond...
127.0.0.1:6666 faulted: UnableToResolvePhysicalConnection on PING
127.0.0.1:6666 failed to nominate (Faulted)
> UnableToResolvePhysicalConnection on GET
No masters detected
127.0.0.1:6666: Standalone v2.0.0, master; keep-alive: 00:03:00; int: Connecting; sub: Connecting; not in use: DidNotRespond
127.0.0.1:6666: int ops=0, qu=0, qs=0, qc=1, wr=0, async=1, socks=2; sub ops=0, qu=0, qs=0, qc=0, wr=0, socks=1
Circular op-count snapshot; int: 0 (0.00 ops/s; spans 10s); sub: 0 (0.00 ops/s; spans 10s)
Sync timeouts: 0; fire and forget: 0; last heartbeat: -1s ago
resetting failing connections to retry...
retrying; attempts left: 2...
1 unique nodes specified
Requesting tie-break from 127.0.0.1:6666 > __Booksleeve_TieBreak...
Allowing endpoints 00:00:05 to respond...
127.0.0.1:6666 returned, but incorrectly
127.0.0.1:6666 failed to nominate (Faulted)
> UnableToResolvePhysicalConnection on GET
No masters detected
127.0.0.1:6666: Standalone v2.0.0, master; keep-alive: 00:03:00; int: Disconnected; sub: Connecting; not in use: DidNotRespond
127.0.0.1:6666: int ops=0, qu=0, qs=0, qc=1, wr=0, async=5, socks=3; sub ops=0, qu=0, qs=0, qc=0, wr=0, socks=2
Circular op-count snapshot; int: 0 (0.00 ops/s; spans 10s); sub: 0 (0.00 ops/s; spans 10s)
Sync timeouts: 0; fire and forget: 0; last heartbeat: -1s ago
resetting failing connections to retry...
retrying; attempts left: 1...
1 unique nodes specified
Requesting tie-break from 127.0.0.1:6666 > __Booksleeve_TieBreak...
Allowing endpoints 00:00:05 to respond...
127.0.0.1:6666 returned, but incorrectly
127.0.0.1:6666 failed to nominate (Faulted)
> UnableToResolvePhysicalConnection on GET
No masters detected
127.0.0.1:6666: Standalone v2.0.0, master; keep-alive: 00:03:00; int: Disconnected; sub: Connecting; not in use: DidNotRespond
127.0.0.1:6666: int ops=0, qu=0, qs=0, qc=1, wr=0, async=8, socks=4; sub ops=0, qu=0, qs=0, qc=0, wr=0, socks=3
Circular op-count snapshot; int: 0 (0.00 ops/s; spans 10s); sub: 0 (0.00 ops/s; spans 10s)
Sync timeouts: 0; fire and forget: 0; last heartbeat: -1s ago

person tozevv    schedule 26.05.2014    source источник
comment
Я изучаю несколько отдельных отчетов об ошибках подключения - полагаю, это связано с   -  person Marc Gravell    schedule 26.05.2014
comment
Пробовал с 1.0.297. Кажется, вы изменили что-то, связанное с логикой повтора, но не повезло.   -  person tozevv    schedule 08.06.2014


Ответы (2)


У меня была такая же проблема при использовании пакета nuget напрямую. Я клонировал репозиторий StackExchange.Redis и создал новую DLL с включенной командой bash для моно:

./monobuild.bash

Ссылался на полученную DLL, и она безупречно работала на OSX с точным кодом, который вы указали в вопросе.

person psousa    schedule 12.07.2014
comment
Я мог подтвердить, что перестройка StackExchange.Redis в Mono помогает (я сделал это в Windows с Xamarin Studio, нацеленной на локальную установку Mono) - person V.B.; 16.07.2014
comment
Могу подтвердить, мне просто нужно было сделать то же самое для приложения, работающего под Ubuntu 14.4. Сборка из монорепозитория с последующим копированием библиотеки DLL поверх библиотеки, использованной в сборке проекта, решила проблему. - person shawty; 12.07.2015
comment
Я все еще получаю ошибку при использовании этого метода в OSX. тест под StackExchange.Red вроде все пройдено. но все равно ошибаюсь: UnableToResolvePhysicalConnection - person zach; 28.09.2015

Как утверждали другие, StackExchange.Redis имеет проблемы с подключением к серверу в моно, и вам нужно создать настраиваемую сборку из источника, ориентируясь на Mono. Итак, я создал пакет nuget из моно-сборки библиотеки, используя monobuild.bash. Вы можете использовать его как прямую замену исходного StackExchange.Redis на моно.

https://www.nuget.org/packages/StackExchange.Redis.Mono/

Поскольку мы используем пакет в нашем серверном приложении, я буду регулярно его обновлять.

person LordHippo    schedule 15.09.2015
comment
Обратите внимание, что ответы только по ссылкам не приветствуются, ответы SO должны быть конечной точкой поиска. для решения (по сравнению с очередной остановкой ссылок, которые со временем устаревают). Пожалуйста, подумайте о добавлении здесь отдельного синопсиса, сохранив ссылку в качестве справочной. - person kleopatra; 15.09.2015
comment
@kleopatra ссылка не является ссылкой, это пакет, который я сделал, чтобы иметь возможность использовать StackExchange.Redis на Mono, и подумал, что это будет полезно для всех имея эту проблему. - person LordHippo; 15.09.2015
comment
Я поддерживаю это, поскольку он решил мою проблему в Mono, не потратив на это больше минуты. Спасибо за работу @LordHippo - person Donovan Solms; 05.04.2016