我已经开始编写一个小的 ASP.NET MVC 4 项目。然而,到目前为止,还没有前端,因为我开始使用我的项目将公开的 API。API 是使用 Web API 的 API 控制器创建的。API 控制器访问存储在 Raven DB 数据库中的数据。使用 VS 2012 和 IIS Express 调试我的代码时,一切正常。在第一个请求期间,就是这样。在第二个请求中,Raven DB IDocumentStore 对象(即数据库连接对象)已被释放,我不知道它是如何发生的。
我使用 Ninject 将IDocumentStore
对象注入到我的存储库对象中,并且 Ninject 的设置如下:
public class NinjectModule: Ninject.Modules.NinjectModule {
readonly string _connStrName;
IDocumentStore _store;
public NinjectModule(string connStrName) {
_connStrName = connStrName;
}
public override void Load() {
_store = new DocumentStore { ConnectionStringName = _connStrName };
_store.Initialize();
Bind<IDocumentStore>().ToConstant(_store);
}
public override void Unload() {
_store.Dispose();
base.Unload();
}
}
被IDocumentStore
设置在Unload
方法中,但据我所知,该Unload
方法永远不会被调用。
如果有人能告诉我为什么我IDocumentStore
会被处理,那就太好了,但我会在它真正被处理时找到一种调试方法。我可以在处理特定对象时触发吗?
我已经非常仔细地检查IDocumentStore
过,我的(仍然非常小的)代码库从未处理过该对象。