2013-02-03 3 views
0

J'essaye d'obtenir l'article du serveur de mongodb, parfois son travail et après 4-5 essaye son arrêt resonding dans la dernière rangée (je ne peux pas enlever l'objet dehors la question quelqu'un avait-il avant? Quelle est la bonne façon de sortir l'objet?mongodb C# requête ne répond pas

  var client = new MongoClient(connectionString); 
      var server = client.GetServer(); 
      var database = server.GetDatabase("myPlaces"); 
      var collection = database.GetCollection<MongoPlace>("Places"); 
      int startDay = int.Parse(Request.QueryString["day"]); 
      MongoPlace mp = collection.AsQueryable<MongoPlace>().Where(x => x.guid == 
          Request.QueryString["id"]).FirstOrDefault(); 

Répondre

0

Il est probable que vous atteigniez la limite de pool de connexions par défaut. Comme il semble qu'il s'agit d'une application Web, vous ne devez pas ouvrir le client plus d'une fois par instance de votre application Web.

Le MongoClient, MongoServer, MongoDatabase et MongoCollection sont tous thread-safe et en général, il ne devrait y avoir une instance de chacun. (Voir here pour plus d'informations).

Vous souhaiterez probablement effectuer cette opération au démarrage de l'application, puis maintenir les connexions statiquement jusqu'à la fermeture de l'application.

Dans mes applications ASP.NET MVC, j'ajoute généralement une classe "DatabaseConfig" qui s'appelle de la même manière que les autres configurations d'applications. À titre d'exemple, voici un code que j'ai dans le projet, je suis en train de construire en utilisant MongoDB (il n'y a pas d'erreur de manipulation encore):

var client = new MongoClient(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); 
var server = client.GetServer(); 

DataLayer.Client = client; 
DataLayer.Server = server; 

var settings = new MongoDatabaseSettings(server, "default");    
settings.WriteConcern = WriteConcern.Acknowledged; 
DataLayer.Database = DataLayer.GetDatabase(settings); 

Puis, en Application_Start, j'appelle une méthode qui contient Initialize le code ci-dessus.

DatabaseConfig.Initialize();