autoface - MVC控制器和Web Api控制器的依赖注入
本文关键字:控制器 依赖 注入 Api MVC autoface Web | 更新日期: 2023-09-27 18:16:43
我有MVC控制器(在控制器文件夹)和Web Api控制器(在Api文件夹)在同一个项目:这是文件夹结构:
- 控制器
- ProductController
- Api
- ProductController
这是我的bootstrapper方法:
private static void SetAutofacContainer()
{
var builder = new ContainerBuilder();
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterControllers(Assembly.GetExecutingAssembly());
//builder.RegisterType<UnitOfWork>().As<IUnitOfWork>().InstancePerRequest();
builder.RegisterType<DbFactory>().As<IDbFactory>().InstancePerRequest();
// Repositories
builder.RegisterAssemblyTypes(typeof(ProductRepository).Assembly)
.Where(t => t.Name.EndsWith("Repository"))
.AsImplementedInterfaces().InstancePerRequest();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
我不能向我的Web Api控制器注入存储库。下面是我得到的例外:
创建类型为的控制器时发生错误"ProductController"。确保控制器具有无参数公共构造函数。
我做错了什么?
您没有设置Web API的GlobalConfiguration.Configuration.DependencyResolver
;你只设置MVC的DependencyResolver
。
添加以下行:
GlobalConfiguration.Configuration.DependencyResolver =
new AutofacWebApiDependencyResolver(container);