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

时间:2013-04-08 18:57:00

标签: c# mongodb mongodb-.net-driver

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

1 个答案:

答案 0 :(得分:3)

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

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

通常,您可以获取MongoDB连接使用的实例,因为它们在MongoServerInstanceAddress属性上可用。

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

Documentation

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

cursor.Server.Instance.Address.Host

cursor.Server.Instances[] 

Cursor Server Documentation

当有多个Instance可用时,C#驱动程序会引发异常抛出和异常。因此,如果您不知道有多少个实例,则需要处理exceptionInvalidOperationException),或者始终使用Instances[]属性来返回关联的实例。