如何使用新的C#驱动程序2.0调用Ping
命令?
在旧驱动程序中,它可以通过Server.Ping()
获得?另外,有没有办法在不运行实际查询的情况下查明服务器是否正在运行/响应?
使用mongoClient.Cluster.Description.State
无济于事,因为即使在mongo服务器开始响应后它仍然处于断开状态。
答案 0 :(得分:3)
您可以使用其Description
属性检查群集的状态:
var state = _client.Cluster.Description.State
如果您希望特定服务器退出该群集,则可以使用Servers
属性:
var state = _client.Cluster.Description.Servers.Single().State;
答案 1 :(得分:1)
这对我来说都适用于c#driver 2和1
int main()
{
char buffer[128];
int i=0;
printf("Please enter a digit or a string and then a newline\n");
scanf("%s", buffer);
// Checks until the end of string that all chars are digits
while ((buffer[i] != '\0') && (isdigit(buffer[i]) != 0))
{
i++;
}
// If index of buffer doesn't point to the end of string, means that a non digit char was found
if (buffer[i] != 0)
{
printf("You entered a string\n");
}
else
{
printf("You entered digits\n");
}
return 0;
}
答案 2 :(得分:0)
作为@ i3arnon的回答,我可以用这种方式告诉我这是可靠的:
var server = client.Cluster.Description.Servers.FirstOrDefault();
var serverState = ServerState.Disconnected;
if (server != null) serverState = server.State;
或新版本的.Net
var serverState = client.Cluster.Description.Servers.FirstOrDefault()?.State
?? ServerState.Disconnected;
但如果您真的想要运行ping命令,可以这样做:
var command = new CommandDocument("ping", 1);
try
{
db.RunCommand<BsonDocument>(command);
}
catch (Exception ex)
{
// ping failed
}