MVC3领域问题

时间:2011-08-25 01:05:55

标签: asp.net-mvc-3 asp.net-mvc-3-areas

我正在使用MVC3构建应用程序,当我想添加区域时,我遇到了问题。

我添加的UsersArea一切正常但是当我尝试运行网站时出现以下错误:

找不到关键用户控制器的组件

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:Castle.MicroKernel.ComponentNotFoundException:找不到关键用户控制器的组件

来源错误:

第160行:public IController CreateController(RequestContext context,string controllerName) 第161行:{ 第162行:返回IoC.Resolve((controllerName +“Controller”)。ToLower()); 第163行:} 第164行:

这是我的温莎代码:

    protected override IWindsorContainer CreateContainer(string windsorConfig)
    {

        IWindsorContainer container = new WindsorContainer();

        container.Register(Component.For<IUnitOfWorkFactory>()
            .ImplementedBy<NHibernateUnitOfWorkFactory>());

        container.Register(Component.For<IProductRepository>()
            .ImplementedBy<ProductRepository>()
            .LifeStyle.Is(LifestyleType.Transient));

        container.Register(Component.For<ICustomerService>()
            .ImplementedBy<CustomerService>()
            .LifeStyle.Is(LifestyleType.Transient));

        container.Register(Component.For<ICustomerRepository>()
            .ImplementedBy<CustomerRepository>()
            .LifeStyle.Is(LifestyleType.Transient));

        container.Register(Component.For<ICategoryRepository>()
            .ImplementedBy<CategoryRepository>()
            .LifeStyle.Is(LifestyleType.Transient));

        container.Register(Component.For<IOrderRepository>()
            .ImplementedBy<OrderRepository>()
            .LifeStyle.Is(LifestyleType.Transient));

        container.Register(Component.For<ILogger>()
            .ImplementedBy<NLogLogger>()
            .LifeStyle.Is(LifestyleType.Transient));



        container.Register(AllTypes.Of<IController>()
             .FromAssembly(typeof(HomeController).Assembly)
             .Configure(t => t.Named(t.Implementation.Name.ToLower())
             .LifeStyle.Is(LifestyleType.Transient)));


        return container;
    }

    public class RhinoIoCControllerFactory : IControllerFactory
    {
      public IController CreateController(RequestContext context, string controllerName)
      {
          return IoC.Resolve<IController>((controllerName + "Controller").ToLower());
      }

      public void ReleaseController(IController controller)
      {
          IoC.Container.Release(controller);
      }

    public SessionStateBehavior GetControllerSessionBehavior(RequestContext requestContext, string controllerName)
    {
        return SessionStateBehavior.Default;
    }
    }

0 个答案:

没有答案