仅具有一个成员的副本集中的MongoDB和C#驱动程序套接字超时

时间:2012-12-15 17:15:17

标签: c# mongodb

我有一个运行C#的web应用程序,它与c#driver 1.7.0.4714连接到MongoDB。我想把这个MongoDB放到一个带有两个辅助副本的副本集中。当我在副本集模式下重新启动原始MongoDB时,它会获得主要版本,但是我的Web应用程序中的大部分连接都会失败

  

System.Net.Sockets.SocketException

当我在非副本设置模式下重启MongoDB时,一切都很好用。

这是我的连接字符串:“mongodb:// myserver:27017”

2 个答案:

答案 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

所以每个第二或第三个请求都失败了。修复连接字符串以使用域名,并修复可以解析域名的问题。修复所有内容。