[英]MongoDB. The list of all servers
我為MongoDB使用C#驅動程序。 我可以獲取本地網絡中所有MonogDB服務器的列表,例如MS SQL服務器的SqlDataSourceEnumerator嗎?
謝謝。
您可以做的是找到所有活動的IPv4地址。 你可以在這里找到如何做到這一點(Ken Fyrstenberg回答)
然后使用HttpClient對象從您找到的所有IP獲取響應,但在端口27017上嘗試{//創建一個新的HttpClient對象。 HttpClient client = new HttpClient();
HttpResponseMessage response = await client.GetAsync("http://localhost:27017/");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
// Above three lines can be replaced with new helper method in following line
// string body = await client.GetStringAsync(uri);
Console.WriteLine(responseBody); //HERE you can check for "MongoDB"
}
catch(HttpRequestException e)
{
Console.WriteLine("\nException Caught!");
Console.WriteLine("Message :{0} ",e.Message);
}
響應如下(Mongod實例在特定的ip上運行):
您正嘗試在本機驅動程序端口上訪問MongoDB。 對於http診斷訪問,請將1000添加到端口號
因此,通過使用響應字符串,您可以確定Mongod實例是否在特定的ip上運行。
如果自定義MongoDB端口(默認值除外:27017),這可能不起作用。 有關MongoDB的網絡曝光和安全性的更多信息
不,沒有內置的方法來發現網絡中的所有MongoDB服務器。 雖然我看到有一個基本上是端口掃描的答案,但這在許多層面上存在缺陷。
SqlDataSourceEnumerator
類的工作原理是將廣播數據包發送到本地網段。 它非常高效,因為該段上的“所有”設備將接收數據包並具有響應選項。 我通常建議只集中存儲一組活動的MongoDB服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.