2012-05-18 55 views
1

我在使用Ninject的InRequestScope擴展時遇到了一些問題。看起來我在同一個請求中獲得了IDocumentSession的新實例。我使用ASP.NET MVC 4測試版將RavenDb作爲嵌入式HttpServer運行。我有一個引導程序類,看起來像這樣:嵌入式HttpServer模式中的ASP.NET MVC 4和Ninject InRequestScope與RavenDb IDocumentSession

public static class ApplicationBootstrapper 
{ 
    private static IKernel _kernel; 

private static readonly IDocumentStore DocumentStore = new EmbeddableDocumentStore 
{ 
    DataDirectory = @"App_Data\RavenDb", 
    UseEmbeddedHttpServer = true 

}.Initialize(); 

public static void Initialize() 
{ 
    DocumentStore.Conventions.IdentityPartsSeparator = "-"; 

    _kernel = new StandardKernel(); 

    _kernel.Bind<IUserService>().To<UserService>(); 
    _kernel.Bind<IDocumentStore>().ToConstant(DocumentStore); 

    _kernel.Bind<IDocumentSession>().ToMethod(x => 
    { 
     var store = x.Kernel.Get<IDocumentStore>(); 
     return store.OpenSession(); 
    }).InRequestScope(); 
} 

public static IKernel Kernel 
{ 
    get { return _kernel; } 
} 

}

我試圖設置範圍InSingeltonScope。在這種情況下,我確實得到了相同的IDocumentSession,但那當然不是我想要的。任何關於我可能在這裏做錯的建議?

回答

2

InRequestScope需要其中一個Web擴展。在你的情況下,你應該安裝和使用Ninject.MVC3,而不是自己的引導程序。

+0

工作很好,非常感謝! – Pelle