1

C#ドライバー1.7.0.4714でMongoDBに接続するC#Webアプリを実行しています。この1つのMongoDBを2つのセカンダリを持つレプリカセットに入れたいと思います。元のMongoDBをレプリカセットモードで再起動すると、プライマリが取得されますが、Webアプリからのほとんどの接続が失敗します。

System.Net.Sockets.SocketException

非レプリカセットモードでMongoDBを再起動すると、すべてが再び正常に機能します。

これが私の接続文字列です: "mongodb:// myserver:27017"

4

2 に答える 2

0

私は非常に簡単な答えを見つけました、ここでダンプの質問をして申し訳ありません:

ドメイン名を使用してreplciaを設定しました。

rs.add("myserver01")
rs.add("myserver02")
rs.add("myserver03")

アプリケーションサーバーでドメイン名myserver01, ...,を解決できず、IPアドレスを使用して接続しました。mongodb://10.0.0.1:27017,10.0.0.2:27017,10.0.0.3:27017

したがって、2番目または3番目の要求はすべて失敗しました。ドメイン名を使用するように接続文字列を修正し、ドメイン名を解決できるように修正すると、すべてが修正されました。

于 2012-12-19T11:28:24.460 に答える
0

レプリカセットに接続すると、通常、ドライバーはレプリカセットまたはスタンドアロンサーバーに接続していることを認識できます。

使用しているC#ドライバーのバージョンを指定せず、使用している接続文字列/構文の正確な形式を提供していませんが、チュートリアルではこれについて詳しく説明しています:http ://www.mongodb.org / display / DOCS / CSharp + Driver + Tutorial#CSharpDriverTutorial-MongoClientclass

これは、サーバーが1つだけ指定されていて、レプリカセット名を指定しない場合、ダイレクトモードが使用されることを示していますが、これは目的ではありません。

デフォルトの自動モードではなく、レプリカセットモードを明示的に使用するか、レプリカセット名を指定する必要があります。

于 2012-12-16T04:37:43.073 に答える