[英]Clearing MongoDb keys on IIS website
IIS和Mongo的新手,我正在嘗試尋找一種方法來清除服務器中的密鑰,以避免出現“已添加具有相同密鑰的項目”的異常。
IMongoDatabase _db;
IMongoCollection<BoardStorageItem> _boardsCollection;
public MongoDb()
{
var client = new MongoClient("mongodb://localhost");
_db = client.GetDatabase("KanbanDemonstration");
BsonClassMap.RegisterClassMap<CardStorageItem>();
BsonClassMap.RegisterClassMap<ColumnStorageItem>();
BsonClassMap.RegisterClassMap<BoardStorageItem>();
BsonClassMap.RegisterClassMap<EmployeeStorageItem>();
_boardsCollection = _db.GetCollection<BoardStorageItem>("Board");
}
public BoardStorageItem GetBoardByName(string name)
{
var board = _boardsCollection.AsQueryable().FirstOrDefault(b => b.Name == name);
return board;
}
public class MongoConverter
{
MongoDb _mongoDb;
public MongoConverter()
{
_mongoDb = new MongoDb();
}
public BoardStorageItem GetBoardByName(string name)
{
return _mongoDb.GetBoardByName(name);
}
}
然后是網頁本身上的代碼
protected void Button1_Click(object sender, EventArgs e)
{
_mongoConverter = new MongoConverter();
var board = _mongoConverter.GetBoardByName(TextBox1.Text);
BoardName = board.Name;
BoardId = board.Id;
Label3.Text = BoardName;
Label4.Text = BoardId;
Session.Clear();
}
這是我第一次使用該按鈕獲取電路板時的效果,但是如果第二次嘗試,嘗試新建MongoConverter時會出現異常“已添加具有相同鍵的項目”。 我以為在清除會話后也將清除密鑰,但是似乎唯一可行的方法是重置服務器本身。
每種類型只能調用BsonClassMap.RegisterClassMap<T>()
。 並且應該在應用程序啟動時完成,然后根據文檔打開任何數據庫連接。
由於您使用的是ASP.NET,因此請將其放在全局應用程序類(global.asax)的Application_Start事件中
void Application_Start(object sender, EventArgs e)
{
BsonClassMap.RegisterClassMap<CardStorageItem>();
BsonClassMap.RegisterClassMap<ColumnStorageItem>();
BsonClassMap.RegisterClassMap<BoardStorageItem>();
BsonClassMap.RegisterClassMap<EmployeeStorageItem>();
}
您可以創建另一個調用它的方法,這樣就不會污染全局應用程序類。 當然,從構造函數中刪除注冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.