c# - MongoDB C# 单声道

标签 c# mongodb mono

从 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/

相关文章:

mongodb - 如何在 Mongodb compass UI 中运行地理空间查询?

linux - 安装mongodb时找不到sudo服务命令

sql-server - 使用 Windows Auth 将 Mono 转换为 SQL Server

c# - 在 C# 中查找可用的内存插槽

c# - 本地任务如何在完成之前避免垃圾回收

C# REST 客户端示例?

ios - Unity3d 4.6.3交叉编译失败

c# - 如果我在代码中设置一些值,我仍然可以使用 UpdateModel() 吗?

mongodb - meteor Collection2 : duplicate key error for nested uniq

compiler-errors - 代码可以使用 netcore 编译,但不能使用 mono 编译