繁体   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