我有一个运行C#的web应用程序,它与c#driver 1.7.0.4714连接到MongoDB。我想把这个MongoDB放到一个带有两个辅助副本的副本集中。当我在副本集模式下重新启动原始MongoDB时,它会获得主要版本,但是我的Web应用程序中的大部分连接都会失败
System.Net.Sockets.SocketException
当我在非副本设置模式下重启MongoDB时,一切都很好用。
这是我的连接字符串:“mongodb:// myserver:27017”
答案 0 :(得分:0)
当您连接到副本集时,通常驱动程序可以确定它是连接到副本集还是独立服务器。
您不会说您正在使用哪个版本的C#驱动程序,并且您没有提供正在使用的连接字符串/语法的确切格式,但本教程详细介绍了这一点:{{ 3}}
它表示如果只指定了一个服务器而您没有指定副本集名称,则使用直接模式,这不是您想要的。
您应该显式使用副本集模式而不是默认自动模式,或者您应该指定副本集名称。
答案 1 :(得分:0)
我发现答案非常简单,很抱歉在这里提出转储问题:
我使用域名设置了我的replcia集,即
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
所以每个第二或第三个请求都失败了。修复连接字符串以使用域名,并修复可以解析域名的问题。修复所有内容。