我對使用Ninject和EntityFramework的ASP.NET MVC 3應用程序有一個奇怪的問題。在ASP.NET MVC 3中使用Ninject和EntityFramework的ChildAction
我們有一個ISession接口,該接口由EntitySession擴展,實際上它是EntityFramework DbContext的輕包裝。
這裏是我的Ninject綁定:
Kernel.Bind<MyEfDbContext>().To<MyEfDbContext>().InRequestScope();
Kernel.Bind<ISession>().To<EntitySession>().InRequestScope();
正如你所看到的,一切都在要求範圍之內。
問題是,當我執行ChildAction時,它在第一次打開頁面時工作正常,但是當我刷新頁面時,我總是得到此異常,並且必須重建或重置IIS以擺脫它。
The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
我在我的控制器中注入了ISession,它應該放在請求的末尾。
在我看來,執行一個子動作不應該做另一個請求,所以它應該使用與其主動作相同的dbcontext實例。
我不知道其他人是否也遇到過類似的問題。
我的剃刀代碼如下所示:
@Html.Action(MVC.Controller.Action(Model.Id))
你使用哪個版本的ninject? – mipe34