2017-07-04 4 views
1

Ich versuche eine Datei zu Mongo Atlas mit C# Mongo Driver hochladen. Aber ich verstehe nicht, wie man sich mit der Klasse MongoServerSettings verbindet. Ich habe es versucht:Datei zu Mongo Atlas mit Mongo Driver hochladen

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}, 
     } 
    }); 
} 

Aber, funktioniert nicht.

Ich kann mit der Mongoclient-Klasse verbinden, aber ich weiß nicht, wie Sie die MongoGridFS-Klasse verwenden.

+0

[Aus der Dokumentation] (http://mongodb.github.io/mongo-csharp-driver/2.4/reference/gridfs/gettingstarted/) Sie sollten eine 'GridFSBucket' werden, der ein bereitgestellte Argument von 'IMongoDatabase', die Sie von einer Verbindung erhalten, die Sie mit' MongoClient' erhalten haben. Es scheint, als ob Sie versuchen, eine veraltete Schnittstelle zu verwenden. Tun Sie stattdessen, was die Dokumentation sagt. –

+0

Hinzufügen zu dem. Sie scheinen zu versuchen, sich innerhalb der offengelegten Methode zu verbinden. Tu das nicht. Behalten Sie stattdessen Ihre Verbindung zu MongoDB für den Lebenszyklus der Anwendung bei. Verwenden Sie dann die Methoden nur, um den aktuellen Datenbank-Namespace oder den Namespace der Sammlung entsprechend der Methode auszuwählen, die verwendet wird. Das erneute Instanziieren und Aufhängen von Datenbankverbindungen "pro Anfrage" ist kein empfohlenes Muster. –

+0

Danke Neil, Du hast Recht –

Antwort

0

Sie diesen Link überprüfen könnten, wie Atlas zu verbinden MongoDB C#

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

Aus dem Link:

zu einem Atlas M0 (Free Tier) Cluster zu verbinden, müssen Sie Verwenden Sie eine C# /. Net-Treiberversion, die MongoDB 3.4 unterstützt.

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

Bitte post Hauptteil dieser Link-Info in der Antwort. In der Zukunft könnte diese Verbindung unterbrochen werden und diese Antwort wird nutzlos sein. Vielen Dank – acostela