C# MVC温莎城堡-can';在控制器构造函数中不能有多个参数

C# MVC温莎城堡-can';在控制器构造函数中不能有多个参数,c#,asp.net-mvc,castle-windsor,C#,Asp.net Mvc,Castle Windsor,我用Castle Windsor安装了我的MVC应用程序,从 当我有以下代码时,编译器进入第一个构造函数,并且我的服务没有被初始化 private readonly IUserLoginService userLoginService; private readonly IUserMessageService userMessageService; public BaseApiController() { } public BaseApiController(IUserLogi

我用Castle Windsor安装了我的MVC应用程序,从

当我有以下代码时,编译器进入第一个构造函数,并且我的服务没有被初始化

 private readonly IUserLoginService userLoginService;
 private readonly IUserMessageService userMessageService;

 public BaseApiController()
 {

 }

 public BaseApiController(IUserLoginService userLoginService, IUserMessageService userMessageService)
 {
     this.userLoginService = userLoginService;
     this.userMessageService = userMessageService;
 }
但是,当我删除第二个参数时,编译器进入这个(正确的)构造函数

 public BaseApiController(IUserLoginService userLoginService)
 {
     this.userLoginService = userLoginService;
 }
那么,我不能向我的
ApiController
构造函数添加多个参数的原因是什么?所有服务都在同一命名空间中

容器安装程序类:

    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        container.Kernel.ComponentRegistered += Kernel_ComponentRegistered;

        //Register all controllers
        container.Register(

            //Nhibernate session factory
            Component.For<ISessionFactory>().UsingFactoryMethod(
            //CreateNhSessionFactory
                NHSessionFactoryCreator.CreateNhSessionFactory
            ).LifeStyle.Singleton,

            //Unitofwork interceptor
            Component.For<NHUnitOfWorkInterceptor>().LifeStyle.Transient,

            //All repoistories
            Classes.FromAssembly(Assembly.GetAssembly(typeof(NHUserLoginRepository))).InSameNamespaceAs<NHUserLoginRepository>().WithService.DefaultInterfaces().LifestyleTransient(),

            //All services
            Classes.FromAssembly(Assembly.GetAssembly(typeof(UserLoginService))).InSameNamespaceAs<UserLoginService>().WithService.DefaultInterfaces().LifestyleTransient(),

            //All MVC controllers
            Classes.FromThisAssembly().BasedOn<IController>().LifestyleTransient()
            );
    }

我必须将installer类修改为:

            Classes.FromAssembly(typeof(NHUserLoginRepository).Assembly)
                   .BasedOn<IRepository>()
                   .WithService.FromInterface().LifestyleTransient(),

            Classes.FromAssembly(typeof(UserLoginService).Assembly)
                   .BasedOn<IService>()
                   .WithService.FromInterface().LifestyleTransient(),
Classes.fromsassembly(typeof(NHUserLoginRepository).Assembly)
.BasedOn()
.WithService.FromInterface().LifestyleTransient(),
Classes.fromsassembly(typeof(UserLoginService.Assembly)
.BasedOn()
.WithService.FromInterface().LifestyleTransient(),

您的
IUserMessageService
是否明确注册在
IWindsorContainer
中?如果在大的
container.Register()
调用后放置断点,则可以检查
container
以检查已注册的服务
            Classes.FromAssembly(typeof(NHUserLoginRepository).Assembly)
                   .BasedOn<IRepository>()
                   .WithService.FromInterface().LifestyleTransient(),

            Classes.FromAssembly(typeof(UserLoginService).Assembly)
                   .BasedOn<IService>()
                   .WithService.FromInterface().LifestyleTransient(),