簡體   English   中英

mongodb C#查詢沒有響應

[英]mongodb C# query doesn't respond

我試圖從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();

您可能正在達到默認的連接池限制。

看起來這是一個Web應用程序,因此您不應為每個Web應用程序實例多次打開客戶端。

MongoClientMongoServerMongoDatabaseMongoCollection都是線程安全的,通常每個實例只有一個實例。 (有關更多信息,請參見此處 )。

您可能需要在應用程序啟動時執行此操作,然后靜態維護連接,直到應用程序退出。

在我的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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM