1

我有一个正在运行的 C# Web 应用程序,它使用 c# 驱动程序 1.7.0.4714 连接到 MongoDB。我想将这个 MongoDB 放入具有两个辅助节点的副本集中。当我在副本集模式下重新启动我的原始 MongoDB 时,它会获得主要但来自我的 Web 应用程序的大多数连接都失败了

System.Net.Sockets.SocketException

当我以非副本集模式重新启动 MongoDB 时,一切都再次运行良好。

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

4

2 回答 2

0

当您连接到副本集时,通常驱动程序可以确定它正在连接到副本集或独立服务器。

您没有说您使用的是哪个版本的 C# 驱动程序,也没有提供您正在使用的连接字符串/语法的确切格式,但本教程在此处详细介绍了这一点:http ://www.mongodb.org /display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-MongoClientclass

表示如果只指定一台服务器,不指定副本集名称,则使用直接模式,这不是你想要的。

您应该明确使用副本集模式而不是默认自动模式,或者您应该指定副本集名称。

于 2012-12-16T04:37:43.073 回答
0

我找到了很简单的答案,很抱歉在这里问一个转储问题:

我使用域名设置了我的副本,即

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

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

于 2012-12-19T11:28:24.460 回答