i3a*_*non 3 .net c# mongodb mongodb-csharp-2.0 mongodb-.net-driver
在旧的API(1.X)中,您可以通过使用从以下位置返回State的MongoServer实例上的属性来判断服务器是否已连接MongoClient.GetServer:
public bool IsConnceted
{
get
{
return _client.GetServer().State == MongoServerState.Connected;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,GetServer它不是新API(2.0)的一部分.怎么能实现呢?
更合适的方法不是检查服务器而是检查群集(可能包含多个服务器),您可以直接从MongoClient实例访问它:
public bool IsClusterConnceted
{
get
{
return _client.Cluster.Description.State == ClusterState.Connected;
}
}
Run Code Online (Sandbox Code Playgroud)
如果您想检查也可能的特定服务器:
public bool IsServerConnceted
{
get
{
return _client.Cluster.Description.Servers.Single().State == ServerState.Connected;
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,该值由最后一个操作更新,因此可能不是最新的.实际确保有效连接的唯一方法是执行某种操作.
正如 所指出的i3arnon,在正确更新状态之前,必须对数据库执行某种操作。
枚举数据库的行为足以更新状态。
这对我有用:
var databases = _client.ListDatabasesAsync().Result;
databases.MoveNextAsync(); // Force MongoDB to connect to the database.
if (_client.Cluster.Description.State == ClusterState.Connected)
{
// Database is connected.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2191 次 |
| 最近记录: |