web-dev-qa-db-ja.com

CompositeServerSelectorを使用してサーバーを選択する30000ms後にタイムアウトが発生しました

MongolabsにMongoデータベースをデプロイしようとすると、すべてが正常に機能し、新しいデータベースを作成します。私の接続文字列をご覧ください。

    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

15
Ragesh S

以下のように接続文字列メソッドを置き換えています。

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

これで解決しました。

Paul Lemkeからの回答をご覧ください。

14
Ragesh S

MongoLabに接続する場合は、接続文字列の末尾に「?connect = replicaSet」を追加します。

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

このJIRAチケットには詳細があります。 https://jira.mongodb.org/browse/CSHARP-116

基本的に、デフォルトではレプリカセットメンバーに接続します。しかし、MongoLabの単一ノード設定は実際には単一ノードのレプリカセットであるため、これを信頼しません。接続文字列に?connect = replicaSetを追加すると、ドライバーは強制的にレプリカセットモードに移行し、すべて機能します。

ここでその情報を見つけました。

11
Paul Lemke

認証データベースが正しく設定されていることを確認してください。

接続したいDBのみに言及したときにこの問題に遭遇しましたが、認証データベースが異なりました(admin db以外)。

この行のdb-nameは、認証DBと見なされます。

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

その後、選択したDBを後で変更できます

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

同じエラーメッセージですが、MongoLabsデプロイメントでは発生しません。

Asp.Net Coreアプリのタイトルにリストされているのと同じエラーが発生しました。私の問題はIOC構成の問題によるものでした。

私のIOCコンテナーでは、ラップされたMongoClientインスタンスは依存関係の一時的なライフスタイルで構成されました。

MongoDb C#ドライバーごと:

MongoClientインスタンスは、静的変数として、または寿命がシングルトンのIoCコンテナのいずれかとして、グローバルな場所に保存することをお勧めします。

オブジェクトのライフスタイルをシングルトンに昇格させ、問題を解決しました。

私は使っている:

  • .Net Core 2.0
  • Mongo C#ドライバーバージョン2.5
  • Castle Windsor for my IOCバージョン3.3.0

C#ドライバークライアントセクションを参照してください: http://mongodb.github.io/mongo-csharp-driver/2.5/reference/driver/connecting/#re-use

1
Brennan Mann

現在のIPアドレスがmongodbサーバーでホワイトリストに登録されていることを確認してください。インターネットプロバイダーを変更する場合は、新しいIPをホワイトリストに登録する必要があります。

1
pankaj upadhyay

データベースのユーザー名でも大文字と小文字が区別されることを確認してください。ユーザー名の大文字と小文字が区別されるため、この問題に遭遇しました。

1
Ramakrishna