Тайм-аут C# Docker MongoDB через 30000 мсC#

Место общения программистов C#
Ответить
Anonymous
 Тайм-аут C# Docker MongoDB через 30000 мс

Сообщение Anonymous »

Я новичок в Docker и запускаю из него mongo. Однако я сталкиваюсь со следующей ошибкой, когда хочу написать в нее. Это прекрасно работает, когда я использую mongo исключительно в локальной среде (т. е. запускаю mongodb локально).
Я ссылаюсь на mongo в своем файле docker-compose-test следующим образом:< /p>

Код: Выделить всё

mongo:
image: mongo
restart: always
ports:
- 27017:27017
environment:
MONGO_INITDB_ROOT_USERNAME: username
MONGO_INITDB_ROOT_PASSWORD: password
Затем в файле appsettings.config я установил строку подключения следующим образом:

Код: Выделить всё

"MongoConnectionString": "mongodb://username:password@localhost:27017"
Одна вещь, которую следует отметить: я вполне уверен, что это действительно запускает его экземпляр с этими учетными данными, потому что, если я попытаюсь подключиться к нему с помощью администратора компаса Mongo с хостом localhost, а также соответствующим паролем и именем пользователя, когда мой Docker Compose не запущен и не работает, он не сможет подключиться, когда он работает, он работает нормально.
Тем не менее, в моем коде я загружаю контекст монго следующим образом:

Код: Выделить всё

// Create mongo class map
Mapper.CreateMaps();

string connectionString = configuration.GetValue("ConnectionStrings:MongoConnectionString");

string mongoDataBase = configuration.GetValue("MongoDataBases:MongoDataBaseName");

_client = new MongoClient(connectionString);
_database = _client.GetDatabase(mongoDataBase);
А затем я пытаюсь вставить нужные данные в свою коллекцию (но это не получается) следующим образом:

Код: Выделить всё

// GetTypedMongoCollection returns a IMongoCollection
var collection = mongoContext.GetTypedMongoCollection();

Сообщение об ошибке:

Произошло время ожидания после 30 000 мс при выборе сервера с помощью CompositeServerSelector{ Selectors = MongoDB.Driver .MongoClient+AreSessionsSupportedServerSelector, LatencyLimitingServerSelector
{AllowedLatencyRange = 00:00:00.0150000 } }. Клиентское представление состояния кластера: { ClusterId: "1", ConnectionMode: "Автоматический", Тип: "Неизвестно", Состояние: "Отключено",
Серверы: [{ ServerId: "{ ClusterId: 1, EndPoint: " Unspecified/localhost:27017" }", EndPoint: "Unspecified/localhost:27017", Состояние: "Отключено", Тип: "Неизвестно", HeartbeatException: "MongoDB.Driver.MongoConnectionException: произошло исключение при открытии соединения с сервером . ---> MongoDB.Driver.MongoAuthenticationException: невозможно пройти аутентификацию с использованием механизма протокола sasl SCRAM-SHA-1 ---> MongoDB.Driver.MongoCommandException: Ошибка команды saslStart: аутентификация не выполнена

Я заметил, что там упоминается «Не указано», и в этом, как я понимаю, проблема, но если это так, то как правильно построить строку подключения к mongo? Насколько я понимаю, это так? Далее следует: у нас есть CTX, мы вызываем GetDatabase, который создаст БД, если она не существует, а затем, когда мы вызываем GetCollection, она должна создать коллекцию, если она не существует. Где я ошибся?

Подробнее здесь: https://stackoverflow.com/questions/546 ... er-30000ms
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»