我想用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类。
[从文档](http://mongodb.github.io/mongo-csharp-driver/2.4/reference/gridfs/gettingstarted/)你应该使用一个'GridFSBucket'这需要一个提供的参数你通过'MongoClient'获得的连接获得的'IMongoDatabase'。似乎你正在尝试使用不赞成使用的界面。相反,做文档说。 –
添加到这一点。你似乎试图在公开的方法中“连接”。不要这样做。而应该在应用程序的生命周期中保持与MongoDB的连接。然后只使用这些方法来选择当前数据库名称空间或集合名称空间,以适合使用的方法。重新实例化和挂起数据库连接“每个请求”不是推荐模式。 –
谢谢尼尔,你是对的 –