从 C# 连接时,我在检查 mongodb 是否处于事件状态时遇到问题。下面的代码显示了我正在尝试做的事情。如果 mongodb 不可用,我期待一个异常(exception)。但是,即使 mongodb 未打开,代码也无一异常(exception)地运行。稍后,当尝试查询数据库时,代码将超时并出现任务异常。
我的平台是 OS X、Mono 4.0.3、Xamarin、MongoDB 驱动程序 2.0.1。
Windows等其他平台是否抛异常
或者是否有其他方法来验证数据库是否处于事件状态?
最好,胡
MongoClient client = new MongoClient( "mongodb://localhost:27017" );
try
{
IMongoDatabase db = client.GetDatabase( "clientservertest" );
// Should throw exception if not connected
m_collection = db.GetCollection<T>( collection );
m_connected = true;
}
catch( Exception )
{
m_connected = false;
}
最佳答案
“monogodb//”风格的 URI 是抛出异常的一个问题,尝试在 try/catch 中抓取数据库统计信息:
MongoClient client = new MongoClient( "mongodb://localhost:27017" );
try
{
IMongoDatabase db = client.GetDatabase( "clientservertest" );
try (
db.GetStats();
m_connected = true;
catch (MongoConnectionException) {
m_connected = false;
}
}
catch( Exception ) // Generic exception
{
m_connected = false;
}
根据您使用的版本,您可以使用 Server Ping() 方法。从您的客户端获取服务器对象 (var server = client.GetServer()) 并对其执行 ping (server.Ping())。
关于c# - MongoDB C# 单声道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167118/