![](/img/trans.png)
[英]MongoDB C# driver: connection string for sharding over replica set
[英]MongoDB and C# driver socket timeouts in replica set with only one member
我有一個正在運行的C#Web應用程序,它與c#驅動程序1.7.0.4714連接到MongoDB。 我想將此一個MongoDB放入具有兩個輔助副本的副本集中。 當我以副本集模式重新啟動原始的MongoDB時,它將獲得主副本,但隨后來自Web應用程序的大多數連接都會失敗
System.Net.Sockets.SocketException
當我以非副本集模式重新啟動MongoDB時,一切都再次正常運行。
這是我的連接字符串:“ mongodb:// myserver:27017”
當您連接到副本集時,通常,驅動程序可以確定它正在連接到副本集或獨立服務器。
您沒有說出正在使用哪個版本的C#驅動程序,也沒有提供正在使用的連接字符串/語法的確切格式,但是本教程在此處詳細介紹了此內容: http : //www.mongodb.org / display / DOCS / CSharp + Driver + Tutorial#CSharpDriverTutorial-MongoClientclass 。
它指示如果僅指定一台服務器,而您未指定副本集名稱,則使用直接模式,這不是您想要的。
您應該顯式地使用副本集模式,而不是默認的自動模式,或者應該指定副本集名稱。
我發現答案很簡單,很抱歉在這里提出轉儲問題:
我使用域名設置了代表,即
rs.add("myserver01")
rs.add("myserver02")
rs.add("myserver03")
域名myserver01, ...,
在我的應用程序服務器上無法解析,我使用IP地址連接: mongodb://10.0.0.1:27017,10.0.0.2:27017,10.0.0.3:27017
因此,每個第二個或第三個請求都會失敗。 修復連接字符串以使用域名,還修復域名可以解析的問題,從而修復了所有問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.