使用以下代码时,我在使用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集合是空的,我希望(我对驱动程序代码库的理解有限)将其填充。希望对此代码库有更多经验的人可以了解正在发生的事情,或者向我提供有关在代码库中查找位置的一些指示。
答案 0 :(得分:0)
实际上我们设法将问题追溯到网络地址转换问题,我们通过在主机文件中添加一些行来测试。司机似乎现在工作正常。