使用Web Api 2.2集成时,Autofac请求生命周期范围始终为null(3.4)

时间:2015-11-30 04:11:04

标签: asp.net-web-api2 autofac

我正在使用autofac web api 2.2集成(版本3.4),我正在调试我的一个控制器。当我从我希望存在活动请求的任何点尝试以下操作时,似乎请求生命周期范围始终为null:

var x = (AutofacWebApiDependencyResolver) GlobalConfiguration.Configuration.DependencyResolver;
x.GetRequestLifetimeScope();  // always null

这是预期的行为吗?我有点困惑,因为看起来我的所有组件都在'root'解析了,根据文档很糟糕。当我使用InstancePerRequest()注册时,我希望它自动将它放入请求范围。好像是:

AutofacWebApiDependencyResolver.BeginScope()  
永远不会发生。

我可以发布更多的示例代码,但是我已经按照快速入门指南和非常基本的控制器重现了它,所以我怀疑它在我上面的逻辑中更多的是一个缺陷,并且希望有人可以指出它。谢谢!

2 个答案:

答案 0 :(得分:0)

我有同样的问题,我的问题是我从MVC项目复制了我的autofac配置,并在InstancePerRequest注册了我的依赖项。当我将其更改为InstancePerDependency时,它解决了问题并且GetRequestLifetimeScope正在运行。

builder.RegisterType<X>().As<IX>().InstancePerDependency();

答案 1 :(得分:0)

在操作方法中,您可以通过以下方式获取请求范围

var scope = Request.GetDependencyScope();