2017-07-04 5 views
1

J'essaie de télécharger un fichier à Mongo Atlas avec C# Mongo Driver. Mais je ne comprends pas comment se connecter avec la classe MongoServerSettings. J'ai essayé ceci:Télécharger le fichier en Mongo Atlas avec Mongo Driver

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

Mais, ne fonctionne pas.

Je peux me connecter avec la classe mongoclient, mais je ne sais pas comment utiliser la classe MongoGridFS.

+0

[De la documentation] (http://mongodb.github.io/mongo-csharp-driver/2.4/reference/gridfs/gettingstarted/), vous devez utiliser un 'GridFSBucket' qui prend un argument fourni de 'IMongoDatabase' que vous obtenez à partir de la connexion obtenue avec' MongoClient'. On dirait que vous essayez d'utiliser une interface obsolète. Au lieu de faire ce que la documentation dit. –

+0

Ajout à cela. Vous semblez essayer de "se connecter" dans la méthode exposée. Ne fais pas ça. Au lieu de cela, persistez votre connexion à MongoDB pour le cycle de vie de l'application. Ensuite, utilisez uniquement les méthodes pour sélectionner l'espace de noms de la base de données ou l'espace de noms de collection en cours, selon la méthode utilisée. La réinstanciation et la suspension des connexions à la base de données "par requête" ne sont pas recommandées. –

+0

Merci Neil, vous avez raison –

Répondre

0

vous pouvez vérifier ce lien sur la façon de se connecter à MongoDB Atlas en utilisant C#

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

À partir du lien:

Pour vous connecter à un cluster M0 (Tier libre) Atlas, vous devez utilisez une version de pilote C#/.Net qui prend en charge MongoDB 3.4.

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

S'il vous plaît afficher la partie principale de ce lien info dans la réponse. À l'avenir, ce lien pourrait être rompu et cette réponse sera inutile. Je vous remercie – acostela