我在解决为什么我无法连接到我在MongoHQ创建的新数据库时遇到了一些麻烦。
我想在我的Web.config文件中包含正确的连接字符串,并让我的Mongo对象引用数据库连接。
连接字符串(显然是编辑过的)是:
公共访问
mongo flame.mongohq.com:27065/dunedin -u {username} -p {password}
AWS内部访问
mongo flame.local.mongohq.com:27065/dunedin -u {username} -p {password}
显然,我已经在密码中包含了正确的用户名来代替大括号中的占位符。
我的代码是:
string connection = ConfigurationManager.ConnectionStrings["DBMongo"].ConnectionString;
var mongo = new Mongo(connection);
mongo.Connect();
但是,一旦我尝试实例化Mongo对象,我就会得到格式异常
无效的连接字符串:
对于远程托管的MongoDB实例,该连接字符串应该是什么样的?
修改
Web.Config中的连接字符串条目是
<add name="DBMongo" connectionString="mongo flame.mongohq.com:27065/dunedin -u ausername -p apassword"/>
答案 0 :(得分:6)
MongoDB的连接字符串格式化为URI,详细信息为can be found here。以下是基本格式和一些示例:
mongodb://[username:password@]host1[:port1][/[database][?options]]
mongodb://127.0.0.1
mongodb://127.0.0.1/mydatabase
mongodb://mongosrv.com:10230/mydatabase
mongodb://myadmin:secretpass@mongosrv.com:10230/mydatabase
// Or in your case it would be
mongodb://ausername:apassword@flame.mongohq.com:27065/dunedin
您还可以使用MongoUrlBuilder和MongoUrl来构造或解析连接字符串programatticaly。虽然有点罗嗦,但我相信推荐用法就像这样
var mongoUrl = new MongoUrl(settings.ConnectionString);
var mongoClient = new MongoClient(mongoUrl);
var mongoServer = mongoClient.GetServer();
var mongoDatabase = mongoServer.GetDatabase(mongoUrl.DatabaseName);
答案 1 :(得分:3)
在mongo shell
中,输入show users
。然后使用在连接字符串中显示的哈希密码作为密码。
答案 2 :(得分:1)
你显然是在使用mongodb-csharp。您最肯定使用的不是有效的连接字符串。您可以在http://groups.google.com/group/mongodb-csharp组提出问题,也可以在此处查看文档和代码。甚至还有一个连接字符串构建器,因此您无需知道确切的语法。
答案 3 :(得分:0)
你的连接字符串如何放在Web.config中?你得到的例外表明它无效。使用MongoDB文档澄清它。