使用凭据连接到C#中的MongoDB

时间:2015-06-28 10:12:15

标签: c# mongodb visual-studio-2013 credentials

您好我尝试使用最新的官方MongoDB支持的MongoDB驱动程序在c#中使用Visual Studio 2013连接到我的远程MongoDB。我遇到的问题是我无法插入集合或甚至无法建立连接。

我使用以下代码创建mongo凭证(DBName,用户,密码)

 mongoCredential = MongoCredential.CreateMongoCRCredential("MongoDB", 
                            "xxxxxxxxxxxxx", "xxxxxxxxxxxxxxxxxxxxxxx");

设置凭据列表

 mongoClientSettings = new MongoClientSettings 
        { 
            Credentials = new[] { mongoCredential }, 
            Server = new MongoServerAddress("xx.xxx.xx.xxx", 38180)
        };

将我们的mongo服务器凭据添加到我们的客户端

 mongoClient = new MongoClient(mongoClientSettings);

然后连接:

 private void button1_Click(object sender, EventArgs e)
    {
        // Connect to database
        mongoDatabase = mongoClient.GetDatabase("MongoDB");
    }

现在我尝试插入一个集合:

 private void button4_Click(object sender, EventArgs e)
    {
        // Create a collection
        mongoDatabase.CreateCollectionAsync("aCollection");
    }

这个方法对我们不起作用,因为当我从提示符运行mongo并使用凭据连接到远程数据库然后运行db.stats()它返回一个空db:

 > db.stats()
 {
    "db" : "MongoDB",
    "collections" : 0,
    "objects" : 0,
    "avgObjSize" : 0,
    "dataSize" : 0,
    "storageSize" : 0,
    "numExtents" : 0,
    "indexes" : 0,
    "indexSize" : 0,
    "fileSize" : 0,
    "ok" : 1
 }
 >

MongoDB不是我的事情,在这里有任何帮助都会非常感激,因为我会围绕这个问题进行讨论吗?

1 个答案:

答案 0 :(得分:1)

可能(可能?)CreateCollectionAsync抛出异常,但你没有观察到那个异常。

与C#中的所有异步方法一样,CreateCollectionAsync立即返回,实际工作在后台异步完成。

你应该“等待”这种方法。当您使用await时,调用Task将被挂起,直到被调用的Task完成,此时await将返回被调用Task的结果,或者如果被调用的Task出现故障,则重新抛出异常。