我在同一个项目中有MVC控制器(在Controllers文件夹中)和Web Api控制器(在Api文件夹中):这是文件夹结构:
这是我的引导程序方法:
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的'。确保控制器具有无参数 公共建设者。
我做错了什么?
答案 0 :(得分:9)
您尚未设置Web API的GlobalConfiguration.Configuration.DependencyResolver
;你只设置MVC的DependencyResolver
。
添加以下行:
GlobalConfiguration.Configuration.DependencyResolver =
new AutofacWebApiDependencyResolver(container);