Autofac - 依赖注入的MVC控制器和Web API控制器 [英] Autofac - dependency injection for MVC controller and Web Api controller
问题描述
我MVC控制器(控制器中的文件夹),在同一个项目网页API控制器(API中的文件夹):这里是文件夹结构:
I have MVC controllers (in Controllers folder) and Web Api controllers (in Api folder) in the same project: Here is the folder structure:
- 控制器
- ProductController的
- ProductController的
下面是我的引导程序的方法:
Here is my bootstrapper method:
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)); }
我不能注入资源库到我的网页API控制器。这里是我得到异常:
I can not inject repositories to my Web Api controllers. Here is the exception I get:
试图创建类型的控制器时发生错误
ProductController的。确保控制器具有一个无参数
公共构造函数。An error occurred when trying to create a controller of type 'ProductController'. Make sure that the controller has a parameterless public constructor.
我在做什么错了?
推荐答案
您还没有设置网页API的
GlobalConfiguration.Configuration.DependencyResolver
;你只设置MVC的DependencyResolver
。You haven't set Web API's
GlobalConfiguration.Configuration.DependencyResolver
; you only set MVC'sDependencyResolver
.添加以下行:
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
这篇关于Autofac - 依赖注入的MVC控制器和Web API控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!