我正在为一个应用程序创建一个MongoDB连接器,我想知道是否有可能在不知道任何数据库的情况下检查MongoDB服务器是否已启动。
到目前为止,我看到的每个示例都需要知道MongoDB服务器上的过时方法或数据库。
下面是我尝试做的一个例子;
How to check connection to mongodb
我想到的一种方法是使用;
ListDatabaseNames()
捕获任何与连接失败相关的异常。2然而,这似乎是一个“肮脏”的解决方案,因为我还必须捕获所有与无效权限相关的异常才能运行命令。
或许,我想做的事情,并没有什么意义,如果是这样的话,请说!
3条答案
按热度按时间2ic8powd1#
查看以下堆栈溢出后提交;
MongoServer.State equivalent in the 2.0 driver
C# MongoDB.Driver GetServer is Gone, What Now?
How to check connection to mongodb
我已经意识到直接ping服务器/集群是不可能的。
这应该可以处理任何权限问题,因为即使用户实际上没有运行的权限,它也应该返回connected;
如果使用上面的方法,应该进行额外的检查以确保MongoClient不为空。
e4eetjau2#
mongodb的
Ping
命令有一个c#
实现。如此处所述-http://mongodb.github.io/mongo-csharp-driver/2.7/apidocs/html/T_MongoDB_Driver_Core_Operations_PingOperation.htm,PingOperation在
MongoDB.Driver.Core
程序集中可用。你应该可以用类似的东西-
来源:C# Example
这也取决于你正在使用的驱动程序。我建议在你的mongodb驱动程序中查看可用的类。
p5fdfcr13#
我能够利用
ICluster
接口的DescriptionChanged
事件(由MongoClient.Cluster
属性getter返回):