首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Autofac故障

Autofac故障
EN

Stack Overflow用户
提问于 2017-11-01 16:02:46
回答 1查看 445关注 0票数 0

我是新使用Autofac和依赖注入,并已阅读了很多关于它。我收到一条错误消息:“'Autofac.Core.Activators.Reflection.DefaultConstructorFinder‘在'Evaluate.DivisionsController’类型上找到的任何构造函数都不能用可用的服务和参数调用:无法解析构造函数‘void.ctor(Evaluate.Services.DivisionService)’的参数'Evaluate.Services.DivisionService服务‘”。

我确信,我的问题在于用于配置的语法。

这是我在global.asax中的配置

代码语言:javascript
复制
//Autofac Configuration
            var builder = new Autofac.ContainerBuilder();

            builder.RegisterControllers(typeof(MvcApplication).Assembly).PropertiesAutowired();


            //builder.RegisterModule(new ServiceModule());
            builder.RegisterModule(new EFModule());

            var container = builder.Build();

            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

我的EFModule:

代码语言:javascript
复制
builder.RegisterType(typeof(ApplicationDbContext)).As(typeof(IApplicationDbContext)).InstancePerRequest();
            builder.RegisterType<UserProvider>().As<IUserProvider>().InstancePerRequest();

            builder.RegisterType<DivisionService>().As<IDivisionService>().InstancePerRequest();

主计长:

代码语言:javascript
复制
 private DivisionService _divisionService;

        public DivisionsController(DivisionService service)
        {
            _divisionService = service;
        }

司处:

代码语言:javascript
复制
public class DivisionService : BaseService<Division>, IDivisionService
    {

        //private IApplicationDbContext _context;

        public DivisionService(IApplicationDbContext context)
            :base(context)
        {

        }

ApplicationDBContext

代码语言:javascript
复制
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IApplicationDbContext
    {
        private IUserProvider _user;

        public ApplicationDbContext(IUserProvider user)
            : base("DefaultConnection", throwIfV1Schema: false)
        {
            _user = user;
        }

用户提供程序类:

代码语言:javascript
复制
public class UserProvider : IUserProvider
    {
        public string GetApplicationUserName()
        {
            return HttpContext.Current.User.ToString();
        }

    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-01 17:11:03

我已经想明白了。IDivisionService不是从IBaseService继承的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47058968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档