我尝试在Mongolabs中部署我的Mongo数据库,一切正常,我创建了一个新的数据库。请参阅我的连接字符串。
public DbHelper()
{
MongoClientSettings settings = new MongoClientSettings()
{
Credentials = new MongoCredential[] { MongoCredential.CreateCredential("dbname", "username", "password") },
Server = new MongoServerAddress("ds011111.mongolab.com", 11111),
//ConnectTimeout = new TimeSpan(30000)
};
Server = new MongoClient(settings).GetServer();
DataBase = Server.GetDatabase(DatabaseName);
}
但是当我尝试连接数据库时,它显示的错误如下:
答案 0 :(得分:14)
我正在替换下面的连接字符串方法。
new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name")
现在它已经解决了。
请参阅Paul Lemke的答案。
答案 1 :(得分:12)
如果连接到MongoLab,请将“?connect = replicaSet”添加到连接字符串的末尾。
new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name?connect=replicaSet")
此JIRA票证有一些详细信息:https://jira.mongodb.org/browse/CSHARP-1160
基本上默认是连接到副本集成员。但MongoLab的单节点设置实际上是单节点副本集,这使我们不相信它。将?connect = replicaSet附加到您的连接字符串将强制驱动程序进入副本集模式,所有这些都可以正常工作。
答案 2 :(得分:2)
Make Sure your auth db is set correctly.
I ran into this issue when I mentioned only the DB i wanted to connect to , and my auth db was different (other than admin db ).
The db-name in this line is considered as the auth DB .
new MongoClient("mongodb://username:password@ds011111.mongolab.com:11111/db-name?connect=replicaSet")
Then you can change the selected DB Later
mDb = mClient.GetDatabase(mongoDBName);
答案 3 :(得分:2)
它与MongoDB连接错误有关。可能您没有权限,或者未在MongoDB中指定允许的IP。请检查MongoDB Compose中的示例,是否可以连接MongoDB Atlas。如果无法连接,则意味着您使用了错误的MongoDB连接字符串。
答案 4 :(得分:1)
确保数据库用户名也区分大小写。由于用户名的区分大小写,我遇到了这个问题。
答案 5 :(得分:1)
确保当前的IP地址在mongo数据库服务器中列入白名单。 如果您更改互联网提供商,则需要将新IP列入白名单。
答案 6 :(得分:1)
端口 10255 被我的 Internet 提供商/防火墙规则阻止。 在客户端打开这个端口解决了这个问题。
答案 7 :(得分:0)
相同的错误消息,但没有遇到MongoLabs部署。
我刚刚遇到与Asp.Net核心应用程序标题中列出的相同错误。我的问题是由于IOC配置问题。
在我的IOC容器中,我的包装MongoClient实例配置了依赖性瞬态生活方式。
每个MongoDb C#驱动程序:
建议将MongoClient实例存储在全局位置, 要么作为静态变量,要么在具有单例的IoC容器中 寿命。
我将对象的生活方式提升为单身人士,并解决了这个问题。
我正在使用:
请参考C#Driver Client部分: http://mongodb.github.io/mongo-csharp-driver/2.5/reference/driver/connecting/#re-use
答案 8 :(得分:0)
我遇到了这个问题,结果数据库服务器落后2小时。确定时间后,超时问题就解决了。
答案 9 :(得分:0)
我有同样的问题。我能够使用MongoDb Compass连接到MongoDB Atlas,但在C#项目中使用相同的连接字符串,却收到错误消息“使用CompositeServerSelector选择服务器30000ms后发生超时……---> System.Net.Internals。 SocketExceptionFactory + ExtendedSocketException(61):连接被拒绝192.168.1.254:53“。
就我而言,问题是由我的Internet提供商路由器引起的。将连接切换到iPhone的4G热点可以解决连接问题。