Chr*_*son 4 c# ninject asp.net-mvc-4
我刚刚接触到 Ninject.Mvc3 NuGet 包,我想知道创建的对象持续多长时间。
InRequestScope很容易理解:只要网络服务器正在处理特定的网络请求,在此范围内创建的每个对象都会存在。(为了迂腐,对象的生命与对象一样长HttpContext.Current)
但是这些InSingletonScope物体能持续多久呢?文档说,只要 Ninject 内核本身这样做——它包含在NinjectWebCommon静态类中。到目前为止,我所做的最好的猜测是,只要服务器运行 web 应用程序,内核就会一直存在——只要服务器启动,直到应用程序在 IIS 中手动重新启动或更新,对象都在范围内。
我很好奇,因为我很想拥有一些包含只读数据字典的数据访问器作为单例范围,我想知道这是一个好主意,还是计划中的内存泄漏。
只要您的 ASP.NET 应用程序池持续存在,它就会持续存在。
您的应用程序池何时回收?有很多设置可以管理这个:阅读为应用程序池配置回收设置 (IIS 7)。
但基本上,它不会永远存在:如果您想在其中存储只读数据,只需确保将其全部加载,Application_Start()以便在请求到来时准备就绪,您应该很高兴。