Autofac - 依赖注入的MVC控制器和Web API控制器 [英] Autofac - dependency injection for MVC controller and Web Api controller

查看:3395
本文介绍了Autofac - 依赖注入的MVC控制器和Web API控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我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's DependencyResolver.

    添加以下行:

    GlobalConfiguration.Configuration.DependencyResolver =
        new AutofacWebApiDependencyResolver(container);
    

    这篇关于Autofac - 依赖注入的MVC控制器和Web API控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆