Pau*_*uer 8 ninject ninject.web.mvc
我正在使用Ninject for DI和MVC4应用程序中的Ninject.MVC3扩展,特别是版本3.0.0.6.
阅读Ninject维基上的文档,看来创建的对象的生命周期InRequestScope实际上是由ASP.NET控制的,并且要正确清理它们应该注册OnePerRequestHttpModule.
然而,看起来这个doco已经过时了,因为type="Ninject.OnePerRequestModule"/>无法找到.
在另一方面,我读了一些位最近,似乎表明,NinjectHttpApplication已经有涉及OnePerRequest.
我的问题是Ninject.Web.MVC 3.0是否已经处理过这个问题,或者我是否还需要手动将HttpModule添加到我的'web.config'中.
我已将下面的内容添加到我的配置中,一切似乎都在工作,但我根本不知道如何测试对象何时被销毁:
<system.web>
<httpModules>
<add name="OnePerRequestModule" type="Ninject.Web.Common.OnePerRequestHttpModule"/>
</httpModules>
...
Run Code Online (Sandbox Code Playgroud)
我是否需要手动添加OnePerRequestHttpModule或Ninject.Web.MVC为我处理这个?
Rub*_*ink 10
执行摘要:不,你不需要做任何事情web.config.
您可以通过以下方式手动完成检查:
IDisposable .InRequestScope()void Dispose()HttpRequest 如果你击中它Dispose,它就会击中熊的Ninject(并且你将有一个调用堆栈来证明它).
什么电线呢?该Ninject.Web.CommonNuGet包补充说:
public static class NinjectWebCommon
{
public static void Start()
{
...
DynamicModuleUtility.RegisterModule( typeof( OnePerRequestHttpModule ) );
Run Code Online (Sandbox Code Playgroud)
DynamicModuleUtility来自Microsoft.Web.Infrastructure(并且Start方法的调用由以下因素驱动:
[assembly: WebActivator.PreApplicationStartMethod( typeof( App_Start.NinjectWebCommon ), "Start" )]
Run Code Online (Sandbox Code Playgroud)
(来自WebActivatorNuGet包)
讲话说,docco 说:
要获得更多确定性行为,您可以执行以下任何操作:
...
使用为您注册OnePerRequestModule的Ninject.Web.Common扩展.
...
你可以注册
(我的重点).我会说得更清楚......
顺便说一句,在回答这个问题的练习开始时,我没有特别的知识,只是Ninject Ninject.Web.Common我和我的一个应用程序的来源.
| 归档时间: |
|
| 查看次数: |
6998 次 |
| 最近记录: |