我正在使用Ninject在MVC3应用程序中。
我的一个可解决的依赖项使用HttpContext.Current.Server.MapPath("~/App_Data")。
当我在Global.asax(Application_Start)中初始化IoC容器时,我可以在我的模块配置中定义:
由于我的模块正在与应用程序相同的线程中初始化,因此
我的一个可解决的依赖项使用HttpContext.Current.Server.MapPath("~/App_Data")。
当我在Global.asax(Application_Start)中初始化IoC容器时,我可以在我的模块配置中定义:
.WithConstructorArgument("basePath", HttpContext.Current.Server.MapPath("~/App_Data"));
由于我的模块正在与应用程序相同的线程中初始化,因此
HttContext.Current不为null。
然后,我不得不将我的依赖项注入初始化移到一个PreAppStart方法中,使用WebActivator
。由于在这种情况下HttContext尚不可用,因此我必须删除我的dep的参数初始化。
我通过在运行时在我的类实例中解析HttpContext
来解决了问题。但是,事实证明,只要该实例从Request线程调用,就可以做到这一点。一旦我将已解决的实例调用移动到单独的线程中(不会中断控制器的ActionResult生成),我遇到了同样的问题 - 无法再获得HttpContext
。如何在我的情况下解决它?
附言:刚才发现我仍然可以从Global.asax应用程序启动中调用我的依赖项上的方法,并从那里提供HttpContext
。无论如何,请告诉我最好的方法。