Asp.net mvc 3 发布从组件加载Castle Windsor安装程序

Asp.net mvc 3 发布从组件加载Castle Windsor安装程序,asp.net-mvc-3,model-view-controller,castle-windsor,Asp.net Mvc 3,Model View Controller,Castle Windsor,这可能是个愚蠢的问题!我被迫使用温莎城堡作为我的IOC,在MVC的设置上遇到了一些问题。 这是我的 GLOBAL.ASAX protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes);

这可能是个愚蠢的问题!我被迫使用温莎城堡作为我的IOC,在MVC的设置上遇到了一些问题。 这是我的

GLOBAL.ASAX

protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
        RegisterCastle();

    }
    private void RegisterCastle()
    {
        _container = new WindsorContainer();
        _container.Install(FromAssembly.InDirectory(new AssemblyFilter(HttpRuntime.BinDirectory)));
        ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(_container.Kernel));
    }
控制器工厂工作,但仅此而已。我和我的安装程序有一个单独的项目,我希望它能从当前web项目的程序集中加载任何安装程序,我可能需要一些你知道的东西

使用IWindsorInstaller的DI项目中的类根本没有被加载。 我错过什么了吗

在Ninject中,我们可以使用

 kernel.Load(AppDomain.CurrentDomain.GetAssemblies());

我最终在App_Start中使用了WebActivator

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Castle.Facilities.TypedFactory;
using Castle.MicroKernel;
using Castle.MicroKernel.Registration;
using Castle.Windsor;
using Castle.Windsor.Installer;
using DFW.Domain.Interfaces;
using UI.App_Start;
using UI.Windsor;

[assembly: WebActivator.PostApplicationStartMethod(typeof(Bootstrapper), "Wire")]
[assembly: WebActivator.ApplicationShutdownMethod(typeof(Bootstrapper), "DeWire")]

namespace UI.App_Start
{
    public class Bootstrapper
    {
        private static readonly IWindsorContainer Container = new WindsorContainer();
        public static void Wire()
        {
            //To be able to inject IEnumerable<T> ICollection<T> IList<T> T[] use this:
            //container.Kernel.Resolver.AddSubResolver(new CollectionResolver(container.Kernel, true));
            //Documentation http://docs.castleproject.org/Windsor.Resolvers.ashx

            //To support typed factories add this:
            Container.AddFacility<TypedFactoryFacility>();
            Container.Register(Component.For<IServiceFactory>().AsFactory().LifestyleTransient());
            //Documentation http://docs.castleproject.org/Windsor.Typed-Factory-Facility.ashx

            Container.Install(FromAssembly.This()).Install(FromAssembly.Named("APP.Infrastructure.DependencyResolution"));
            var controllerFactory = new WindsorControllerFactory(Container.Kernel);
            ControllerBuilder.Current.SetControllerFactory(controllerFactory);
        }

        public static void DeWire()
        {
            Container.Dispose();
        }
    }
}

您的安装程序是否使用默认的无参数构造函数公开?是的,公开类MyInstaller:IWindsorInstallerSo,回答您的问题,否-看起来您没有做错任何事情。你能提供更多关于什么不起作用的细节吗?