簡體   English   中英

在IIS網站上清除MongoDb密鑰

[英]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.

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