MVC3 Области проблемы - PullRequest
       16

MVC3 Области проблемы

0 голосов
/ 25 августа 2011

Я создаю приложение с MVC3, и у меня возникает проблема, когда я хочу добавить область.

Я добавляю UsersArea, все работает нормально, но при попытке запустить веб-сайт я получаю следующую ошибку:

Компонент для ключевых пользователей не найден

Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: Castle.MicroKernel.ComponentNotFoundException: не найден компонент для ключевых пользовательских контроллеров

Ошибка источника:

Строка 160: публичный IController CreateController (контекст RequestContext, строка 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;
    }
    }
...