如何获取从中提取数据的服务器的地址

本文关键字:数据 提取 服务器 地址 何获取 获取 | 更新日期: 2023-09-27 18:08:01

我知道我们在Java驱动程序中使用cursor.getServerAddress()。但是,我在c#中找不到任何相关的调用

如何获取从中提取数据的服务器的地址

不幸的是,在通过c#驱动程序源代码(以及Java源代码来查看它在做什么)深入挖掘之后,作为提取的一部分使用的实际服务器地址作为私有成员(_serverInstance)隐藏在Enumerator中。

特别地,它隐藏在一个叫做MongoCursorEnumerator的类中。不幸的是,没有一种"诚实"的方式来实现它。我想您可以使用。net反射来实现它,但这通常不是一个好主意,特别是对于不属于您的代码。如果您想拥有一个自定义的驱动程序分支,您可以轻松地将其添加为一个新属性。你可能想在这里添加一个问题。

一般来说,您可以获得MongoDB连接使用的实例,因为它们在MongoServerInstance类(Address属性)上可用。

var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address

文档

但是,在您的情况下,您也可以通过Server属性从cursor获得它:

cursor.Server.Instance.Address.Host

cursor.Server.Instances[] 

Cursor Server Documentation

有趣的是,c#驱动程序在多个实例可用时抛出一个异常。因此,如果您不知道有多少实例,您要么需要处理exception (InvalidOperationException),要么总是使用Instances[]属性返回相关的实例。