[英]How to use VS2012 to debug when an object gets disposed?
我已經開始編寫一個小型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
對象。
我不確定這是否是問題,但是RavenDB IDocumentStore
應該具有單實例生存期范圍,而IDocumentSession
應該具有每個請求范圍。
我本人使用AutoFac,但是快速搜索如何在Ninject中定義生存期范圍會產生此頁面 。
請嘗試在適合IDocumentStore
位置添加.InSingletonScope()
,看看是否可以解決問題。
如果您要在會話中使用Ninject,那么.InRequestScope()
似乎是合適的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.