Соединение, которое вы открываете здесь, на самом деле представляет собой пул из 5 соединений (по умолчанию), так что вы можете просто подключиться и оставить его открытым. Я предполагаю, что вы периодически теряете связь с mongolab, и ваши соединения умирают, когда это происходит. Надеюсь, включение auto_reconnect разрешит это.
Вы можете написать запрос проверки связи, чтобы проверить, является ли соединение активным или нет, как показано ниже.
var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
server.Ping();
В качестве альтернативы при установлении соединения
client = new MongoClient("mongodb://localhost");
database = client.GetDatabase(mongoDbStr);
bool isMongoLive = database.RunCommandAsync((Command<BsonDocument>)"{ping:1}").Wait(1000);
if(isMongoLive)
{
// connected
}
else
{
// couldn't connect
}
Надеюсь, это поможет.