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

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

    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

5 ответов


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

new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name")

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

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


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

new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name?connect=replicaSet")

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

по умолчанию используется подключение к члену набора реплик. Но настройки одного узла MongoLab на самом деле являются набором реплик одного узла, и это заставляет нас не доверять ему. Дописывание ?connect=replicaSet к вашей строке подключения заставит драйвер двигаться в режиме реплики set и все будет работать.

нашел эту информацию здесь.


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


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

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

на db-name в этой строке рассматривается как auth DB .

new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name?connect=replicaSet")

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

mDb = mClient.GetDatabase(mongoDBName);

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

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

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

На Драйвер MongoDb C#:

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

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

Я использую:

  • .Net Core 2.0
  • Mongo C# драйвер версии 2.5
  • замок Виндзор для моей версии МОК 3.3.0

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