MongoDB Driver 2.0 C# is there a way to find out if the server is down? In the new driver how do we run the Ping command?

前端 未结 3 1617
南方客
南方客 2021-01-17 22:59

How do you call the Ping command with the new C# driver 2.0?
In the old driver it was available via Server.Ping()? Also, Is there a way to find

相关标签:
3条回答
  • 2021-01-17 23:23

    As @i3arnon's answer I can tell it was reliable for me in this way:

    var server = client.Cluster.Description.Servers.FirstOrDefault();
    var serverState = ServerState.Disconnected;
    if (server != null) serverState = server.State;
    

    or in new versions of .Net

    var serverState = client.Cluster.Description.Servers.FirstOrDefault()?.State 
        ?? ServerState.Disconnected;
    

    But if you realy want to run a ping command you can do it like this:

    var command = new CommandDocument("ping", 1);
    try
    {
        db.RunCommand<BsonDocument>(command);
    }
    catch (Exception ex)
    {
        // ping failed
    }
    
    0 讨论(0)
  • 2021-01-17 23:32

    You can check the cluster's status using its Description property:

    var state = _client.Cluster.Description.State
    

    If you want a specific server out of that cluster you can use the Servers property:

    var state = _client.Cluster.Description.Servers.Single().State;
    
    0 讨论(0)
  • 2021-01-17 23:36

    This worked for me on both c# driver 2 and 1

    int count = 0;
    var client = new MongoClient(connection);
            // This while loop is to allow us to detect if we are connected to the MongoDB server
            // if we are then we miss the execption but after 5 seconds and the connection has not
            // been made we throw the execption.
            while (client.Cluster.Description.State.ToString() == "Disconnected") {
                Thread.Sleep(100);
                if (count++ >= 50) {
                    throw new Exception("Unable to connect to the database. Please make sure that "
                        + client.Settings.Server.Host + " is online");
                }
            }
    
    0 讨论(0)
提交回复
热议问题