C# 使用Mongo驱动程序将文件上载到Mongo Atlas

C# 使用Mongo驱动程序将文件上载到Mongo Atlas,c#,mongodb,mongodb-replica-set,C#,Mongodb,Mongodb Replica Set,我正在用C#Mongo驱动程序将一个文件上传到Mongo Atlas。但我不知道如何连接到类MongoServer设置。我试过这个: private static MongoServerSettings GetMongoConfig() { var credential = MongoCredential.CreateCredential("admin", "XXXX", "XXXX"); MongoServerAddress[] servers = new MongoServ

我正在用C#Mongo驱动程序将一个文件上传到Mongo Atlas。但我不知道如何连接到类MongoServer设置。我试过这个:

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类。

您可以查看此链接,了解如何使用C连接mongodb Atlas#

从链接:

要连接到Atlas M0(免费层)群集,必须使用支持MongoDB 3.4的C#/.Net驱动程序版本

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

您应该使用一个
GridFSBucket
,它接受提供的
IMongoDatabase
参数,该参数是通过
MongoClient
获得的连接获得的。似乎您正在尝试使用不推荐使用的接口。相反,按照文档中的说明去做。您似乎试图在公开的方法中“连接”。不要那样做。而是在应用程序的生命周期中保持和MongoDB的连接。然后仅使用这些方法选择当前数据库命名空间或集合命名空间,以适合使用的方法。“每个请求”重新实例化和挂断数据库连接不是推荐的模式。谢谢Neil,你说得对。请在回答中发布链接信息的主要部分。在未来,这种联系可能会被打破,而这个答案将毫无用处。非常感谢。