Asp.net mvc InRequestScope未处理

Asp.net mvc InRequestScope未处理,asp.net-mvc,ninject,Asp.net Mvc,Ninject,我在ASP MVC项目中使用Ninject进行数据库绑定。在“private static IKernel CreateKernel()”中,我绑定了一个数据库对象,如下所示: kernel.Bind<IDbSession>().ToProvider<IDbSession>(new NhDbSessionProvider()).InRequestScope(); kernel.Bind().ToProvider(新的NhDbSessionProvider()).InRe

我在ASP MVC项目中使用Ninject进行数据库绑定。在“private static IKernel CreateKernel()”中,我绑定了一个数据库对象,如下所示:

kernel.Bind<IDbSession>().ToProvider<IDbSession>(new NhDbSessionProvider()).InRequestScope();
kernel.Bind().ToProvider(新的NhDbSessionProvider()).InRequestScope();
这几乎完全符合预期,但是站点上的一些页面使用AJAX调用控制器上的方法,并且似乎每一个调用都会打开一个SQL连接,并且不会在控制器返回时处理它。最终,这会导致SQL数据库上的NumberOfConnections超过最大值,并且站点会抛出连接不可用的错误

我是Ninject的新手,我接管了一个现有的项目,试图在不做重大改变的情况下完成这项工作。我能做些什么来处理这些东西?从我所读的内容来看,他们似乎已经自动地这样做了,但也许我就是不明白


如果我需要分享更多的代码,请告诉我

根据

但是,InRequestScope的文档中有一节介绍

具体而言:

使用Ninject.Web.Common包

在web.config中手动注册OnePerRequestModule(例如,如果您 不使用Ninject.Web.MVC*NuGet包)


您的实例可能正在/将要被处置,但不是在您预期的时间。

似乎有人出于任何原因(不是我)评论了这一行。将其添加回去可以解决问题

DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));

我相信SQL连接最终会消失,我不清楚这是因为dispose最终被调用,还是因为它们在SQL Server端超时。当然,在web请求完成之后,这种情况就会发生。。。。至少几分钟后。如果它真的在做它应该做的事情,有没有办法强迫它早点做呢。。。您对OnePerRequestModule的评论让我找到了下面的答案。谢谢