Nachdem Sie den C#-Treiberquellcode (und den Java-Quellcode, um zu sehen, was er tat) etwas tiefer durchsucht haben, ist die tatsächliche Serveradresse, die als Teil des Abrufs verwendet wurde, leider im Enumerator als privates Element verborgen (_serverInstance
).
Insbesondere ist es in einer Klasse namens MongoCursorEnumerator
versteckt . Leider gibt es keinen "ehrlichen" Weg, um dorthin zu gelangen. Ich nehme an, Sie könnten .NET-Reflektion verwenden, um dorthin zu gelangen, aber das ist im Allgemeinen keine gute Idee, insbesondere bei Code, den Sie nicht besitzen. Wenn Sie eine benutzerdefinierte Gabel des Treibers haben möchten, können Sie diese einfach als neue Eigenschaft hinzufügen. Vielleicht möchten Sie hier
ein Problem hinzufügen .
Im Allgemeinen können Sie die von der MongoDB-Verbindung verwendeten Instanzen abrufen, da sie auf der MongoServerInstance
verfügbar sind Klasse, die Address
Eigentum.
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
In Ihrem Fall können Sie es jedoch auch vom cursor
erhalten über den Server
Eigenschaft:
cursor.Server.Instance.Address.Host
oder
cursor.Server.Instances[]
Der C#-Treiber löst interessanterweise eine Ausnahme aus, wenn mehr als eine Instanz verfügbar ist. Wenn Sie also nicht wissen, wie viele Instanzen es gibt, müssen Sie entweder die exception
behandeln (InvalidOperationException
) oder verwenden Sie immer die Instances[]
-Eigenschaft, um die zugeordneten Instanzen zurückzugeben.