0

我正在尝试从 mongodb 服务器获取项目,有时它的工作和 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();
4

1 回答 1

0

您可能会达到默认连接池限制。

看起来这是一个 Web 应用程序,您不应在每个 Web 应用程序实例中多次打开客户端。

、和 都是线程安全的,通常每个应该只有一个实例MongoClient。(有关更多信息,请参见此处)。MongoServerMongoDatabaseMongoCollection

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

在我的 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();
于 2013-02-03T17:01:58.607 回答