作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MVC3 应用程序中使用 Ninject。
我的一个可解析依赖项使用了 HttpContext.Current.Server.MapPath("~/App_Data")
当我在 Global.asax (Application_Start) 中初始化 IoC 容器时,我能够在我的模块配置中定义:
.WithConstructorArgument("basePath", HttpContext.Current.Server.MapPath("~/App_Data"));
HttContext.Current
不为空。
WebActivator
将我的依赖注入(inject)初始化移动到 PreAppStart 方法。 .由于 HttContext 在这种情况下尚不可用,因此我不得不删除我的 dep.xml 的参数初始化。
HttpContext
解决了这个问题。在运行时在我的类实例中。但事实证明,只有从请求线程调用实例才有可能。一旦我将已解决的实例调用移动到单独的线程(不要停止 Controller 的
ActionResult
生成),我就遇到了同样的问题 - 不再能够获得
HttpContext
.如何在我的场景中解决它?
HttpContext
从那里。不过,让我知道哪种方法是最好的方法。
最佳答案
Ninject 中应该有一种方法可以使用委托(delegate)以惰性方式注册依赖项。这样它只会在您访问依赖项时解决它。
这是我使用 StructureMap 的方法:
For<HttpContextBase>().Use(c => new HttpContextWrapper(HttpContext.Current));
关于asp.net-mvc-3 - 如何将 HttpContext 传递给 MVC3 应用程序中的依赖项初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9122052/
我是一名优秀的程序员,十分优秀!