我在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