我在MVC3应用程序中使用Ninject。如何将HttpContext传递给MVC3应用程序中的依赖项初始化
我的一个解析的依赖使得使用HttpContext.Current.Server.MapPath("~/App_Data")
回来时,我被初始化在Global.asax中(的Application_Start)IoC容器,我能够只是在我的模块配置定义:
.WithConstructorArgument("basePath", HttpContext.Current.Server.MapPath("~/App_Data"));
由于我的模块是从与应用程序相同的线程初始化的,因此HttContext.Current
不为空。
然后,我不得不将我的依赖注入初始化移动到PreAppStart方法,使用WebActivator
。由于HttContext在这种情况下还不可用,所以我必须删除我的dep的参数初始化。
我在运行时解决了我的类实例中的HttpContext
问题,解决了这个问题。但事实证明,只要从请求线程调用实例,就可以实现这一点。只要我将已解决的实例调用移动到单独的线程(不要停止控制器的生成),我就会遇到同样的问题 - 不再能够获得HttpContext
。我如何在我的情况下解决它?
P.S.刚刚发现我仍然可以从Global.asax应用程序开始调用我的依赖方法,并从那里提供HttpContext
。不过,让我知道哪个是最好的方法。
HostingEnvironment.MapPath会为你工作吗? – 2012-02-03 06:51:27