Тайм-аут произошел после 30000 мс, выбрав сервер, используя CompositeServerSelector

Я пытаюсь развернуть свою базу данных Mongo в Mongolabs, все работает отлично, и я создаю новую базу данных. Пожалуйста, посмотрите мою строку подключения.

    public DbHelper()
    {

        MongoClientSettings settings = new MongoClientSettings()
        {
            Credentials = new MongoCredential[] { MongoCredential.CreateCredential("dbname", "username", "password") },
            Server = new MongoServerAddress("ds011111.mongolab.com", 11111),
            //ConnectTimeout = new TimeSpan(30000)
        };

        Server = new MongoClient(settings).GetServer();

        DataBase = Server.GetDatabase(DatabaseName);

    }

но когда я пытаюсь подключиться к базе данных, она показывает ошибку вроде:

enter image description here

Ответ 1

Я заменяю метод строки подключения, как показано ниже.

new MongoClient("mongodb://username:[email protected]:11111/db-name")

Теперь это решено.

Пожалуйста, посмотрите ответ от Пола Лемке.

Ответ 2

Добавить "? connect = replicaSet" до конца строки подключения, если вы подключаетесь к MongoLab.

new MongoClient("mongodb://username:[email protected]:11111/db-name?connect=replicaSet")

В этом билете JIRA есть несколько деталей: https://jira.mongodb.org/browse/CSHARP-1160

В основном по умолчанию используется соединение с элементом набора реплик. Но MongoLab Single- Node - это фактически единственный набор реплик node, и это заставляет нас не доверять ему. Добавление? Connect = replicaSet к вашей строке подключения заставит драйвер перейти в режим установки реплик, и все будет работать.

Найдена эта информация здесь.

Ответ 3

Убедитесь, что ваш auth db установлен правильно.

Я столкнулся с этой проблемой, когда упомянул только ту БД, к которой хотел подключиться, и мой auth db отличался (кроме admin db).

Имя db в этой строке рассматривается как аутентификационная БД.

new MongoClient("mongodb://username:[email protected]:11111/db-name?connect=replicaSet")

Затем вы можете изменить выбранную БД позже

mDb = mClient.GetDatabase(mongoDBName);

Ответ 4

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

Ответ 5

Такое же сообщение об ошибке, но не встречается при развертывании MongoLabs.

Я только что столкнулся с той же ошибкой, которая указана в заголовке приложения Asp.Net Core. Моя проблема была связана с проблемой конфигурации IOC.

В моем контейнере IOC мой упакованный экземпляр MongoClient был сконфигурирован с переходным образом жизни зависимостей.

В соответствии с драйвером MongoDb С#:

Рекомендуется хранить экземпляр MongoClient в глобальном месте, либо в виде статической переменной, либо в контейнере IoC с одиночным временем жизни.

Я продвинул образ жизни моего объекта в одиночку, и это решило проблему.

Я использую:

  • .Net Core 2.0
  • Mongo С# Драйвер версии 2.5
  • Замок Виндзор для моей версии IOC 3.3.0

Пожалуйста, обратитесь к клиентскому разделу драйвера С#: http://mongodb.github.io/mongo-csharp-driver/2.5/reference/driver/connecting/#re-use

Ответ 6

Убедитесь, что ваш текущий IP-адрес занесен в белый список на сервере mongo db. Если вы меняете своего интернет-провайдера, новый IP-адрес должен быть в белом списке.