在 C# 中使用 MongoClientSettings 初始化 MongoClient

Initialize MongoClient with MongoClientSettings in C#

我正在尝试从 Mongo 2.0 驱动程序初始化 Mongo 客户端,如下所示:

MongoClientSettings settings = new MongoClientSettings();
settings.WaitQueueSize = int.MaxValue;
settings.WaitQueueuTimeout = new TimeSpan(0,2,0);
settings.MinConnectionPoolSize = 1;
settings.MaxConnectionPoolSize = 25;
settings.Server = new MongoServerAddress("mongodb://localhost");
client = new MongoClient(settings)

但是,当我现在尝试使用以下代码插入文档时:

db = client.GetDatabase("local");
col = db.GetCollection<BsonDocument>(collectionName);
col.InsertOneAsync(new BsonDocument().Add(new BsonElement("id",BsonValue.Create(1)))).Wait();

它什么也没做。它没有被插入,也没有错误消息(尽管在一段时间后 System.Timeout 的第一次机会异常出现在输出中)。如果我用

初始化客户端
client = new MongoClient("mongodb://localhost")

它确实有效并按预期上传了文档。

我希望客户端能够处理非常高的写入吞吐量,所以我首先尝试了这些设置。是我的某些设置有误还是存在其他问题?

编辑:经过更多测试后,我得到的确实是 System.Timeout 异常。

我可以重现这个问题,只是在我的错误消息中,在大约 40 行文本的某处隐藏了一些更有帮助的信息:

No such host is known

原来是MongoServerAddress only expects the hostname, not the protocol:

settings.Server = new MongoServerAddress("localhost");