我正在使用autofac web api 2.2集成(版本3.4),我正在调试我的一个控制器。当我从我希望存在活动请求的任何点尝试以下操作时,似乎请求生命周期范围始终为null:
var x = (AutofacWebApiDependencyResolver) GlobalConfiguration.Configuration.DependencyResolver;
x.GetRequestLifetimeScope(); // always null
这是预期的行为吗?我有点困惑,因为看起来我的所有组件都在'root'解析了,根据文档很糟糕。当我使用InstancePerRequest()注册时,我希望它自动将它放入请求范围。好像是:
AutofacWebApiDependencyResolver.BeginScope()
永远不会发生。
我可以发布更多的示例代码,但是我已经按照快速入门指南和非常基本的控制器重现了它,所以我怀疑它在我上面的逻辑中更多的是一个缺陷,并且希望有人可以指出它。谢谢!
答案 0 :(得分:0)
我有同样的问题,我的问题是我从MVC项目复制了我的autofac配置,并在InstancePerRequest
注册了我的依赖项。当我将其更改为InstancePerDependency
时,它解决了问题并且GetRequestLifetimeScope
正在运行。
builder.RegisterType<X>().As<IX>().InstancePerDependency();
答案 1 :(得分:0)
在操作方法中,您可以通过以下方式获取请求范围
var scope = Request.GetDependencyScope();