web-dev-qa-db-fra.com

Une temporisation s'est produite après 30000ms de sélection d'un serveur à l'aide de CompositeServerSelector

J'essaie de déployer ma base de données Mongo dans Mongolabs, tout fonctionne correctement et je crée une nouvelle base de données. S'il vous plaît voir ma 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);

    }

mais lorsque j'essaie de connecter la base de données, elle affiche une erreur comme:

enter image description here

9
Ragesh S

Je remplace la méthode de la chaîne de connexion comme ci-dessous. 

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

Maintenant, c'est résolu.

S'il vous plaît voir la réponse de Paul Lemke.

13
Ragesh S

Ajoutez "? Connect = replicaSet" à la fin de votre chaîne de connexion si vous vous connectez à MongoLab. 

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

Ce billet JIRA contient quelques détails: https://jira.mongodb.org/browse/CSHARP-1160

Fondamentalement, la connexion par défaut à un membre du jeu de réplicas est utilisée. Mais les paramètres de noeud unique de MongoLab sont en réalité un ensemble de réplicas à noeud unique, ce qui nous empêche de lui faire confiance. Ajouter? Connect = replicaSet à votre chaîne de connexion forcera le pilote à passer en mode jeu de réplicas et tout fonctionnera.

Trouvé cette information ici.

11
Paul Lemke

Assurez-vous que le nom d'utilisateur de la base de données est également sensible à la casse. J'ai rencontré ce problème en raison de la sensibilité à la casse du nom d'utilisateur.

1
Ramakrishna

Assurez-vous que votre base de données d'authentification est définie correctement.

J'ai rencontré ce problème lorsque j'ai mentionné uniquement la base de données à laquelle je voulais me connecter, et ma base de données d'authentification était différente (autre que la base de données d'administration).

Le nom-bd de cette ligne est considéré comme le DB d'authentification.

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

Ensuite, vous pouvez changer le DB sélectionné plus tard

mDb = mClient.GetDatabase(mongoDBName);
1
vikky MCTS

Same Error Message mais non rencontré avec un déploiement MongoLabs. 

Je viens de rencontrer la même erreur répertoriée dans le titre avec une application Asp.Net Core. Mon problème était dû à un problème de configuration IOC.

Dans mon conteneur IOC, mon instance MongoClient encapsulée était configurée avec un mode de vie transitoire de dépendance. 

Par le pilote MongoDb C #: 

Il est recommandé de stocker une instance MongoClient dans un emplacement global, Sous forme de variable statique ou dans un conteneur IoC avec une durée de vie singleton .

J'ai promu le style de vie de mon objet à un singleton et cela a résolu le problème.

J'utilise: 

  • .Net Core 2.0 
  • Mongo C # Driver version 2.5 
  • Castle Windsor pour mon IOC version 3.3.0

Veuillez vous référer à la section Client du pilote C #: http://mongodb.github.io/mongo-csharp-driver/2.5/reference/driver/connecting/#re-use

0
Brennan Mann