簡體   English   中英

處置對象時如何使用VS2012進行調試?

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

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