尝试连接到副本集时,MongoDB C#驱动程序会引发超时异常

时间:2015-09-16 10:08:06

标签: mongodb-.net-driver

使用以下代码时,我在使用C#sharp驱动程序连接到副本集时遇到问题:

var client  = new MongoClient("mongodb://daluser:daluatmongo@xxx:25015,yyy:25015,zzz:25015/database?replicaSet=dal_uat_mongo");
var db = client.GetDatabase("database");
var collection = db.GetCollection<BsonDocument>("table");
var foo = collection.CountAsync(document => true).Result;

这里xxx,yyy和zzz是IP地址,我已经为集合和数据库使用了匿名名称。

这会导致以下异常:&#34;使用CompositeServerSelector&#34;选择服务器30000ms后发生超时。 (详细链接中的更多细节):

https://gist.github.com/bfranklinsportingindex/0270a1e958051b689e56

奇怪的是,如果我们删除副本集选项并且只指定一个服务器,那么它适用于三个服务器中的两个。失败的服务器给我们熟悉的#34;目标机器拒绝连接&#34;错误。

我目前正在使用最新版本的源代码测试,而我们尝试连接的服务器上的mongo版本是2.6.9

我已尝试调试驱动程序的源代码,并在Cluster类的SelectServerAsync方法中找到以下行:

var connectedServers = description.Servers.Where(s => s.State == ServerState.Connected);

这里的connectedServers集合是空的,我希望(我对驱动程序代码库的理解有限)将其填充。希望对此代码库有更多经验的人可以了解正在发生的事情,或者向我提供有关在代码库中查找位置的一些指示。

1 个答案:

答案 0 :(得分:0)

实际上我们设法将问题追溯到网络地址转换问题,我们通过在主机文件中添加一些行来测试。司机似乎现在工作正常。