Sfortunatamente, dopo aver scavato un po' più a fondo attraverso il codice sorgente del driver C# (e il codice sorgente Java per vedere cosa stava facendo), l'indirizzo del server effettivo che è stato utilizzato come parte del recupero è nascosto nell'Enumeratore come membro privato (_serverInstance ).
In particolare, è nascosto in una classe chiamata MongoCursorEnumerator . Sfortunatamente, non esiste un modo "onesto" per arrivarci. Potresti usare la riflessione .NET suppongo per arrivarci, ma generalmente non è una buona idea, specialmente con codice che non possiedi. Se si desidera avere un fork personalizzato del driver, è possibile aggiungerlo facilmente come nuova proprietà. Potresti voler aggiungere un problema qui
.
In generale, puoi ottenere le istanze utilizzate dalla connessione MongoDB, poiché sono disponibili su MongoServerInstance classe, l'Address proprietà.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Tuttavia, nel tuo caso puoi anche ottenerlo dal cursor tramite il Server proprietà:
cursor.Server.Instance.Address.Host
o
cursor.Server.Instances[]
Documentazione del server cursore
È interessante notare che il driver C# genera un'eccezione quando è disponibile più di un'istanza. Quindi, se non sai quante istanze ci sono, devi gestire l'exception (InvalidOperationException ), oppure usa sempre Instances[] proprietà per restituire le istanze associate.