[英]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應用程序實例多次打開客戶端。
MongoClient
, MongoServer
, MongoDatabase
和MongoCollection
都是線程安全的,通常每個實例只有一個實例。 (有關更多信息,請參見此處 )。
您可能需要在應用程序啟動時執行此操作,然后靜態維護連接,直到應用程序退出。
在我的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.