【发布时间】:2017-07-04 02:35:52
【问题描述】:
我正在尝试使用 C# Mongo Driver 将文件上传到 Mongo Atlas。但我不明白如何与 MongoServerSettings 类连接。我试过这个:
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类。
【问题讨论】:
-
From the documentation 你应该使用一个
GridFSBucket,它接受一个提供的IMongoDatabase参数,你从MongoClient获得的连接中获得。似乎您正在尝试使用已弃用的界面。而是按照文档所说的去做。 -
补充。您似乎试图在公开的方法中“连接”。不要那样做。而是在应用程序的生命周期内保持与 MongoDB 的连接。然后只使用方法来选择当前数据库命名空间或集合命名空间,以适合使用的方法。不推荐“按请求”重新实例化和挂起数据库连接。
-
谢谢尼尔,你是对的
标签: c# mongodb mongodb-replica-set