小さな ASP.NET MVC 4 プロジェクトのコーディングを開始しました。ただし、プロジェクトが公開する API から始めたので、これまでのところフロント エンドはありません。API は、Web API の API コントローラーを使用して作成されます。API コントローラーは、Raven DB データベースに格納されたデータにアクセスします。VS 2012 と IIS Express を使用してコードをデバッグすると、すべて正常に動作します。つまり、最初の要求の間です。2 番目の要求では、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
オブジェクトは私の(まだ非常に小さい)コードベースによって破棄されることはありません。