Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Connect to remote MongoDB instance from ASP.NET

I'm having some trouble nutting out why I'm unable to connect to a new database I've created at MongoHQ.

I want to include the correct connection string in my Web.config file and have my Mongo object refer to that for the database connection.

The connection strings (edited, obviously) are:

Public Access

mongo flame.mongohq.com:27065/dunedin -u {username} -p {password}

AWS Internal Access

mongo flame.local.mongohq.com:27065/dunedin -u {username} -p {password}

Obviously, I've included my correct username in password in place of the placeholders in the braces.

My code is:

string connection = ConfigurationManager.ConnectionStrings["DBMongo"].ConnectionString;
var mongo = new Mongo(connection);

mongo.Connect();

However, as soon as I try to instantiate that Mongo object, I get a format exception saying

Invalid connection string on:

What is that connection string supposed to look like for remotely-hosted MongoDB instances?

EDIT:

The Connection String entry in Web.Config is

<add name="DBMongo" connectionString="mongo flame.mongohq.com:27065/dunedin -u ausername -p apassword"/>
like image 774
Phil.Wheeler Avatar asked Jun 22 '10 09:06

Phil.Wheeler


1 Answers

The connection string for MongoDB is formatted as a URI, details can be found here. Below is the basic format and some examples:

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:[email protected]:10230/mydatabase

// Or in your case it would be 

mongodb://ausername:[email protected]:27065/dunedin

You can also use MongoUrlBuilder and MongoUrl to construct or parse the connection string programatticaly. Though a bit wordy, I believe the recommended usage goes like this

var mongoUrl = new MongoUrl(settings.ConnectionString);
var mongoClient = new MongoClient(mongoUrl);
var mongoServer = mongoClient.GetServer();
var mongoDatabase = mongoServer.GetDatabase(mongoUrl.DatabaseName); 
like image 57
James White Avatar answered Oct 02 '22 14:10

James White