Я создаю приложение с 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;
}
}