【发布时间】:2016-03-20 23:13:17
【问题描述】:
根据 SimpleInjector documentation,我们可以像这样定义一个在 OWIN 请求期间将存在的 Scope。
public void Configuration(IAppBuilder app) {
app.Use(async (context, next) => {
using (container.BeginExecutionContextScope()) {
await next();
}
});
}
但是,调用 container.GetCurrentExecutionContextScope() 在 ASP.Net 控制器的操作中调用时总是返回 null。
[HttpGet]
public void MyAction()
{
// Here scope is always null
var scope = Container.GetCurrentExecutionContextScope();
}
我认为它不应该为空,因为控制器操作调用在 OWIN 请求的范围内..
这里需要专家的一些澄清.. :)
谢谢
【问题讨论】:
-
对于 MVC ,控制器在 webrequest 的范围内(参见simpleinjector.readthedocs.org/en/latest/mvcintegration.html)。你想通过这样做达到什么目的?
-
我想在 OWIN 管道和 MVC 操作之间共享相同的对象实例(由 SimpleInjector 实例化)(我认为应该包含在 OWIN 请求的生命周期中,但我可能会错过一些信息)
-
Thomas 已经被问到,“你想通过这样做实现什么目标?”
-
如果我没记错的话,OWIN 管道的东西也在 Web 请求中运行,所以最适合的生活方式是 WebRequestLifestyle。
-
@qujck 我正在尝试将身份框架与 DI 容器(我的案例为 SimpleInjector)集成,我需要共享一些通过 OWIN 和 DI 容器初始化的对象实例。
标签: asp.net-mvc owin simple-injector