2017-07-04 205 views
1

我想用C#Mongo Driver将文件上传到Mongo Atlas。但我不明白如何连接类MongoServerSettings。我试过这个:上传文件到Mongo Atlas用Mongo驱动程序

private static MongoServerSettings GetMongoConfig() 
{ 
    var credential = MongoCredential.CreateCredential("admin", "XXXX", "XXXX"); 

    MongoServerAddress[] servers = new MongoServerAddress[3]; 
    servers[0] = new MongoServerAddress("cluster0-shard-00-00-XXXXX.mongodb.net", 27017); 
    servers[1] = new MongoServerAddress("cluster0-shard-00-01-XXXX.mongodb.net", 27017); 
    servers[2] = new MongoServerAddress("cluster0-shard-00-02-XXXX.mongodb.net", 27017); 

    var ServerSetting = new MongoServerSettings { 
     ConnectionMode = ConnectionMode.ReplicaSet, 
     UseSsl = true,     
     Servers = servers, 
     ReplicaSetName = "Cluster0-shard-0", 
     Credentials = new[]{ credential }, 
    }; 

    return ServerSetting; 
} 

public static void SavePDFInvoice(HttpPostedFileBase file,string fileID, string userID, string userOwner) 
{ 
    var Server = new MongoServer(GetMongoConfig()); 

    var grid = new MongoGridFS(Server, PDFDatabase, new MongoGridFSSettings()); 
    grid.Upload(file.InputStream, fileID, new MongoGridFSCreateOptions 
    { 
     Id = fileID, 
     Metadata = new BsonDocument { 
      { "userID", userID}, 
      { "userOwner", userOwner}, 
     } 
    }); 
} 

但是,不起作用。

我可以连接到mongoclient类,但我不知道如何使用MongoGridFS类。

+0

[从文档](http://mongodb.github.io/mongo-csharp-driver/2.4/reference/gridfs/gettingstarted/)你应该使用一个'GridFSBucket'这需要一个提供的参数你通过'MongoClient'获得的连接获得的'IMongoDatabase'。似乎你正在尝试使用不赞成使用的界面。相反,做文档说。 –

+0

添加到这一点。你似乎试图在公开的方法中“连接”。不要这样做。而应该在应用程序的生命周期中保持与MongoDB的连接。然后只使用这些方法来选择当前数据库名称空间或集合名称空间,以适合使用的方法。重新实例化和挂起数据库连接“每个请求”不是推荐模式。 –

+0

谢谢尼尔,你是对的 –

回答

0

,你可以检查出如何连接使用C#

https://docs.atlas.mongodb.com/driver-connection/#c-net-driver-example

从链接到MongoDB的阿特拉斯此链接:

要连接到阿特拉斯M0(自由层)群集,则必须使用支持MongoDB 3.4的C#/。Net驱动程序版本。

var client = new MongoClient("your clister url"); 
var database = client.GetDatabase("test"); 
+0

请在答案中发布该链接信息的主要部分。在未来,这个链接可能被打破,这个答案将是无用的。谢谢 – acostela

相关问题