Niestety, po przekopaniu się trochę głębiej przez kod źródłowy sterownika C# (i kod źródłowy Java, aby zobaczyć, co robi), rzeczywisty adres serwera, który był używany jako część pobierania, jest ukryty w Enumeratorze jako prywatny element członkowski (_serverInstance
).
W szczególności jest ukryty w klasie o nazwie MongoCursorEnumerator
. Niestety nie ma „uczciwego” sposobu dotarcia do niego. Przypuszczam, że możesz użyć refleksji .NET, aby się do tego dostać, ale generalnie nie jest to dobry pomysł, szczególnie w przypadku kodu, którego nie jesteś właścicielem. Jeśli chciałbyś mieć niestandardowy widelec kierowcy, możesz go łatwo dodać jako nową właściwość. Możesz dodać problem tutaj
.
Ogólnie można uzyskać instancje używane przez połączenie MongoDB, ponieważ są one dostępne na MongoServerInstance
klasa Address
właściwość.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
Jednak w Twoim przypadku możesz go również pobrać z cursor
przez Server
właściwość:
cursor.Server.Instance.Address.Host
lub
cursor.Server.Instances[]
Co ciekawe, sterownik języka C# zgłasza i wyjątek, gdy dostępnych jest więcej niż jedno wystąpienie. Tak więc, jeśli nie wiesz, ile jest instancji, musisz obsłużyć exception
(InvalidOperationException
) lub zawsze używaj Instances[]
właściwość, aby zwrócić powiązane instancje.