Malheureusement, après avoir creusé un peu plus profondément dans le code source du pilote C # (et le code source Java pour voir ce qu'il faisait), l'adresse réelle du serveur qui a été utilisée dans le cadre de la récupération est cachée dans l'énumérateur en tant que membre privé (_serverInstance
).
En particulier, il est caché dans une classe appelée MongoCursorEnumerator
. Malheureusement, il n'y a pas de moyen "honnête" d'y arriver. Vous pouvez utiliser la réflexion .NET, je suppose, pour y arriver, mais ce n'est généralement pas une bonne idée, surtout avec du code que vous ne possédez pas. Si vous vouliez avoir un fork personnalisé du pilote, vous pouvez facilement l'ajouter en tant que nouvelle propriété. Vous voudrez peut-être ajouter un problème ici
.
En général, vous pouvez obtenir les instances utilisées par la connexion MongoDB, car elles sont disponibles sur MongoServerInstance
classe, l'Address
propriété.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Cependant, dans votre cas, vous pouvez également l'obtenir à partir du cursor
via le Server
propriété :
cursor.Server.Instance.Address.Host
ou
cursor.Server.Instances[]
Documentation du serveur de curseur
Le pilote C # lève de manière intéressante une exception lorsque plusieurs instances sont disponibles. Donc, si vous ne savez pas combien d'instances il y a, vous devez soit gérer l'exception
(InvalidOperationException
), ou utilisez toujours les Instances[]
propriété pour renvoyer les instances associées.