【问题标题】:Upload File to Mongo Atlas With Mongo Driver使用 Mongo 驱动程序将文件上传到 Mongo Atlas
【发布时间】: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


【解决方案1】:

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

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

来自链接:

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

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

【讨论】:

  • 请在答案中发布该链接信息的主要部分。将来该链接可能会被破坏,这个答案将毫无用处。谢谢
猜你喜欢
  • 2021-09-25
  • 1970-01-01
  • 2021-03-05
  • 2021-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
相关资源
最近更新 更多