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.