Question Background:
I have setup in MongoLabs (mLab - https://mlab.com/) a database and have added a very simple Collection. I am using the MongoDB
If I had to hazard a guess, the issue is most likely a firewall issue. You should check the following
nslookup
of the host (ds048719.mlab.com) from the C# Application Hostping
of the host (ds048719.mlab.com) from the C# Application Host (might fail, depending on mLab's settings)telnet
, eg telnet ds048719.mlab.com 48719
authenticationDatabase
(in your example, this is specified by the /db
), this is usually admin
but could be your database name if you are on a shared instance.You can find the docs on connecting with the C# driver in the MongoDB C# Driver Docs. It is important to note the following:
The Database Component
The database component is optional and is used to indicate which database to authenticate against. When the database component is not provided, the “admin” database is used.
mongodb://host:27017/mydb
Above, the database by the name of “mydb” is where the credentials are stored for the application.
NOTE:
Some drivers utilize the database component to indicate which database to work with by default. The .NET driver, while it parses the database component, does not use the database component for anything other than authentication.
Finally, I would suggest in the future, obfuscate the hostname and port when posting to SO. While security through obscurity alone is a bad policy, it certainly adds a layer of defense for your MongoDB deployment.
I have similar issue, in my case user wasn't created in database. You can create user by this
db.createUser({
user: "userNameGoesHereRemovedForSO",
pwd: "passwordGoesHereRemovedForSO",
roles: ["readWrite", "dbAdmin"]
});
Quick workaround : just remove database name from the url
var client = new MongoClient("mongodb://root:example@localhost:27017");
var _db = client.GetDatabase("testDB");
Your connection string may be incorrect. You have /db at the end, is "db" the name of your authentication database?
Ensure your authentication database is correct. If it is not you may want to remove it all together and let it fall back to admin