2015-05-12 4 views
4

Я пытаюсь инициализировать MongoClient из драйвера Монго 2.0 следующим образом:Initialize MongoClient с MongoClientSettings в C#

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") 

Он действительно работает и загружает документ по назначению.

Я хочу, чтобы клиент мог обрабатывать очень высокую пропускную способность записи, поэтому я сначала попробовал эти настройки. Я установил некоторые настройки неправильно или есть другая проблема?

EDIT: после некоторого тестирования это действительно исключение System.Timeout, которое я получаю.

+0

ли вы ждать выполнения асинхронной с помощью 'await',' Wait() 'или' .Result'? – mnemosyn

+0

Да, я редактировал код, чтобы его отразить –

+0

Пробовали ли вы с настройками по умолчанию? – mnemosyn

ответ

8

я мог воспроизвести проблему, только в моем сообщении об ошибке, есть некоторая гораздо более полезная информация похоронены где-то около 40 строк текста:

Нет такой хозяин не известен

It оказывается, что MongoServerAddressonly expects the hostname, not the protocol:

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