我知道我们在 Java 驱动程序中使用 cursor.getServerAddress()。但是,我在 C# 中找不到任何相关的调用。
问问题
245 次
1 回答
3
不幸的是,在通过 C# 驱动程序源代码(以及 Java 源代码以查看它在做什么)进行更深入的挖掘之后,用作获取的一部分的实际服务器地址作为私有成员隐藏在 Enumerator 中( _serverInstance
)。
特别是,它隐藏在一个名为MongoCursorEnumerator
. 不幸的是,没有一种“诚实”的方式来实现它。我想你可以使用 .NET 反射来实现它,但这通常不是一个好主意,尤其是对于你不拥有的代码。如果您想拥有驱动程序的自定义分支,您可以轻松地将其添加为新属性。您可能想在此处添加问题。
通常,您可以获取 MongoDB 连接使用的实例,因为它们在MongoServerInstance
类、Address
属性上可用。
var client = new MongoClient();
var server = client.GetServer();
// server.Instance.Address
但是,在您的情况下,您也可以cursor
通过以下Server
属性获取它:
cursor.Server.Instance.Address.Host
或者
cursor.Server.Instances[]
有趣的是,当有多个实例可用时,C# 驱动程序会抛出异常。因此,如果您不知道有多少个实例,您要么需要处理exception
( InvalidOperationException
),要么总是使用该Instances[]
属性来返回关联的实例。
于 2013-04-08T19:37:20.053 回答