Come si chiama il comando Ping
con il nuovo driver C# 2.0?
Nel vecchio driver era disponibile tramite Server.Ping()
? Inoltre, c'è un modo per scoprire se il server è in esecuzione/risponde senza eseguire la query effettiva?
L'utilizzo di mongoClient.Cluster.Description.State
non è di aiuto perché ha ancora dato lo stato disconnesso anche dopo che il server mongo ha iniziato a rispondere.MongoDB Driver 2.0 C# c'è un modo per scoprire se il server non funziona? Nel nuovo driver come eseguiamo il comando Ping?
risposta
È possibile controllare lo stato del cluster utilizzando la sua proprietà Description
:
var state = _client.Cluster.Description.State
Se si desidera che un server specifico da quella dei cluster è possibile utilizzare la proprietà Servers
:
var state = _client.Cluster.Description.Servers.Single().State;
L'ho provato, ma anche dopo che il server è arrivato online lo stato stava tornando come Disconnected. –
@HeenaPatel AFAIK questo riflette lo stato dell'ultima operazione. Per verificare effettivamente la connessione è necessario effettuare un'operazione attiva e vedere se fallisce. – i3arnon
mongoClient.Cluster.Description.State non è affidabile: si è notato che anche dopo che il server era tornato, lo stato veniva disconnesso. Speravo di utilizzare il Ping per verificare il test di connettività rapida e generare eccezioni e non procedere alla query per differenziare le eccezioni di connettività rispetto al timeout di query/comando occasionali a causa del ritardo nella risposta a causa del numero di record. –
Questo ha funzionato per me su entrambi i driver C# 2 e 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");
}
}
Come risposta @ i3arnon I ca n dire che era affidabile per me in questo modo:
var server = client.Cluster.Description.Servers.FirstOrDefault();
var serverState = ServerState.Disconnected;
if (server != null) serverState = server.State;
o nelle nuove versioni di Net
var serverState = client.Cluster.Description.Servers.FirstOrDefault()?.State
?? ServerState.Disconnected;
Ma se davvero desidera eseguire un comando ping si può fare in questo modo:
var command = new CommandDocument("ping", 1);
try
{
db.RunCommand<BsonDocument>(command);
}
catch (Exception ex)
{
// ping failed
}
- 1. MongoDB C# 2.0 Driver multipla svolgimento Svolge
- 2. MongoDB C# Driver 2.0 - Aggiornamento documento
- 3. Proiezione lato server con driver C# di MongoDB 2.0
- 4. MongoDB (server v 2.6.7) con C# driver 2.0: Come ottenere il risultato da InsertOneAsync
- 5. Come ottenere risultati dal driver MongoDb C# 2.0
- 6. Costruire il driver MongoDB C in Windows
- 7. Come creare un nuovo database in MongoDB usando il driver C#
- 8. FindAll in MongoDB .NET Driver 2.0
- 9. Query multi-campo che utilizzano il driver C# per MongoDB
- 10. MongoDB C# Driver 'Cursore non trovato'
- 11. MongoDB. Driver Net 2.0 Pull (remove element)
- 12. Come salvare l'array mongodb in vettoriale usando il driver C++?
- 13. Verifica se il driver MongoDB PHP è installato
- 14. Spark: configurazione driver/operatore. Il driver funziona sul nodo Master?
- 15. È ancora necessario promettere il driver MongoDB?
- 16. Creazione di indici in MongoDB con .NET driver 2.0
- 17. Quale driver MongoDB per Node.js?
- 18. Come posso compilare il programma Mongodb-c-driver?
- 19. findOne NodeJS MongoDB driver
- 20. Come rimuovere un 'documento' con 'ID' usando il Driver Ufficiale C# per MongoDB?
- 21. Come specificare un ordine o un ordinamento usando il driver C# per MongoDB?
- 22. Elemento Mongo update array (driver .NET 2.0)
- 23. Aggiornamento MongoDB utilizzando il driver Java 3
- 24. Laravel: Eccezione PDO, impossibile trovare il driver anche se il driver è installato e testato
- 25. MongoDB C# Driver: Ignora proprietà su Insert
- 26. find_one MongoDB Ruby Driver
- 27. Catch MongoAuthenticationException in Mongo .NET 2.0 Driver
- 28. Il driver firmato appare come non modificato nel gestore dispositivo
- 29. MongoDB C# driver interrogazione campo multiplo
- 30. Il metodo AsQueryable è partito con il nuovo driver Mongrb C# 2.0rc?
possibile duplicato del [MongoServer.State equivalente nel driver 2.0] (http://stackoverflow.com/questions/29459990/mongoserver-state-equivalent-in-the-2-0-driver) – i3arnon
perché sarebbe usi ping invece di un timeout di connessione controllata? Se hai un ping alto, quando ti connetti al server il tuo "tempo totale per connettersi al db" sarà raddoppiato (tempo di ping + tempo di connessione reale) –
mongoClient.Cluster.Description.State non è affidabile - notato anche dopo il server era tornato che stavamo ottenendo lo stato come disconnesso. Speravo di usare il Ping per verificare il test di connettività rapida e lanciare eccezioni e non procedere alla query per differenziare le eccezioni di connettività rispetto al timeout di query/comando occasionale a causa del ritardo nella risposta a causa del numero di record. –