Получение Hangfire для использования MongoDB Storage - PullRequest
0 голосов
/ 10 марта 2019

Я пытаюсь заставить Hanfire использовать хранилище MongoDB с помощью пакета Hangfire.Mongo NuGet.

Я выполняю минимально необходимое в Configure():

app.UseHangfireServer();

И это в ConfigureServices():

services.AddHangfire(
    config => config.UseMongoStorage("mongodb://myhost:27017"),
    "MyDatabase");

Я проверил, что база данных существует, и приведенная выше строка подключения верна.

Я получаю это исключение:

Невозможно очистить блокировки на ресурсе «Миграция».System.TimeoutException: Тайм-аут произошел после 30000 мс при выборе сервера с использованием

CompositeServerSelector {Selectors = MongoDB.Driver.MongoClient + AreSessionsSupportedServerSelector, LatencyLimitingServerSelector {AllowedLatencyRange 00: 00.01: 00 00: 00. 00: 00. 00: 00.Клиентское представление состояния кластера: {ClusterId: "1", ConnectionMode: "Automatic", тип: "Unknown", состояние: "Disconnected", серверы: [{ServerId: "{ClusterId: 1, EndPoint:" Unspecified / myhost: 27017 "}", конечная точка: " Unspecified / myhost: 27017", состояние: "Disconnected", тип: "Unknown", HeartbeatException: "MongoDB.Driver.MongoConnectionException:

Исключительная ситуация при открытии соединения с сервером. ---> System.Net.Sockets.SocketException: Такой хост не известен в System.Net.Dns.HostResolutionEndHelper (IAsyncResult asyncResult)... at Hangfire.Mongo.DistributedLock.MongoDistributedLock.Cleanup () [Hangfire.Mongo.DistributedLock.MongoDistributedLock]

полужирный части заставляют меня поверить, что некоторая информацияне установлен или не сброшен где-то, но я не делаю ничего необычного. Я проверил проблемы с брандмауэром и попробовал многие идеи из этого ответа кому-то подобномувопрос.

Я также пытался изменить строку подключения на все эти

  • mongodb: // myhost: 27017 / MyDatabase
  • mongodb: // myhost: 27017 /? Connect = replicaSet
  • mongodb: // myhost: 27017 / MyDatabase /? Connect = replicaSet

1 Ответ

0 голосов
/ 11 марта 2019

Что я не добавил в своем вопросе, так это то, что мое приложение упаковано в контейнер, как и MongoDB на моей машине.

Я запускал приложение в режиме отладки вне контекста контейнера в Visual Studio. Это означает, что он не мог видеть контейнерную сеть и поэтому не мог подключиться.

...