mongodb C#查询没有响应

时间:2013-02-03 16:21:49

标签: c# mongodb

我正在尝试从mongodb Server获取Item,有时它的工作,并且在4-5尝试之后它停止在最后一行中共振(我无法将对象取出查询) 以前有人有吗?取出物品的正确方法是什么?

            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();

1 个答案:

答案 0 :(得分:0)

您可能正在达到默认的连接池限制。

由于它看起来像是一个Web应用程序,因此您不应该每个Web应用程序实例多次打开客户端。

MongoClientMongoServerMongoDatabaseMongoCollection都是线程安全的,通常应该只有一个实例。 (有关更多信息,请参阅here)。

您可能希望在应用程序启动时执行此操作,然后静态维护连接,直到应用程序退出。

在我的ASP.NET MVC应用程序中,我通常添加一个“DatabaseConfig”类,其调用方式与其他应用程序配置相同。作为一个例子,我在项目中得到的一些代码我正在使用MongoDB构建(目前还没有任何错误处理):

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

然后,在Application_Start中,我调用包含上述代码的Initialize方法。

DatabaseConfig.Initialize();