我正在使用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;
}
}