Asp.net mvc 初始化Web API控制器时,如何配置autofac为接口注入类型?

Asp.net mvc 初始化Web API控制器时,如何配置autofac为接口注入类型?,asp.net-mvc,asp.net-web-api,inversion-of-control,autofac,Asp.net Mvc,Asp.net Web Api,Inversion Of Control,Autofac,我有一个WebAPI控制器,它依赖于另一个类: public class HealthCheckController : System.Web.Http.ApiController { private readonly IHealthCheckReport _healthCheckReport; public HealthCheckController(IHealthCheckReport healthCheckReport) {

我有一个WebAPI控制器,它依赖于另一个类:

 public class HealthCheckController : System.Web.Http.ApiController
    {
        private readonly IHealthCheckReport _healthCheckReport;

        public HealthCheckController(IHealthCheckReport healthCheckReport)
        {
            this._healthCheckReport = healthCheckReport;
        }
}
我使用的是Autofac,在WebApiConfig类的Register方法中,我添加了:

 var builder = new ContainerBuilder();
 builder.RegisterType<HealthCheckReport>().As<IHealthCheckReport>();
 var container = builder.Build();

 // Set the dependency resolver for Web API.
 var webApiResolver = new AutofacWebApiDependencyResolver(container);
 GlobalConfiguration.Configuration.DependencyResolver = webApiResolver;
var builder=newcontainerbuilder();
builder.RegisterType().As();
var container=builder.Build();
//设置Web API的依赖项解析程序。
var webApiResolver=新的AutofacWebApiDependencyResolver(容器);
GlobalConfiguration.Configuration.DependencyResolver=webApiResolver;
但是当我调用Index()操作时,它会抱怨我的控制器没有默认构造函数。然而,我希望Autofac只是神奇地注入我在上面注册的类型


该如何配置?

您还需要注册api控制器

  builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

资料来源:

不幸的是,尽管MVC和Web API接口之间的一致性导致熟悉,但也造成了混淆。