ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# – ASP.NET Core 2.0使用Autofac注入控制器

2019-06-11 05:54:49  阅读:271  来源: 互联网

标签:c autofac asp-net-core-2-0


我正在尝试用Autofac注入我的控制器.不幸的是,我无法在远处配置Autofac,因此’DefaultControllerActivator`不会构建我的控制器?

    public IServiceProvider ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().AddControllersAsServices();
        var containerBuilder = new ContainerBuilder();
        containerBuilder.RegisterModule<ServiceModule>();
        containerBuilder.Populate(services);
        containerBuilder.RegisterType<LoginController>().PropertiesAutowired();

        ApplicationContainer = containerBuilder.Build();
        return new AutofacServiceProvider(this.ApplicationContainer);
    }

    public class ServiceModule : Module
    {
        protected override void Load(ContainerBuilder builder)
        {
            builder.RegisterModule(new DataProviderModule());
            builder.RegisterType(typeof(LoginService)).As(typeof(ILoginService)).InstancePerRequest();
        }
    }

    [Route("api/[controller]")]
    public class LoginController : Controller
    {
        private readonly ILoginService _loginService;

        public LoginController(ILoginService loginService)
        {
            _loginService = loginService;
        }
    }

我按照上面显示的Autofac文档进行操作.不幸的是,LoginController不会被构造,因为它需要注入.

编辑:如果有一种方法使用没有Autofac的“模块”,我会非常有趣的任何建议:)

提前谢谢你!

解决方法:

在ASP.NET Core中使用InstancePerLifetimeScope. differences between ASP.NET and ASP.NET Core like this are documented.

标签:c,autofac,asp-net-core-2-0
来源: https://codeday.me/bug/20190611/1216550.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有