【发布时间】:2012-10-07 05:11:19
【问题描述】:
想问一个关于温莎城堡和为区域控制器实施 IoC 的快速问题。 Castle 2.5 是否支持 MVC 2.0 区域?
我的 Castle 配置适用于我网站根目录中的根控制器,但找不到任何区域控制器
IControllerFactory 'XXX.Castle.WindsorControllerFactory' 没有返回名称为 'Registration' 的控制器。
我不是通过 MvcContrib 直接使用 Castle
代码如下:
class WindsorControllerFactory : DefaultControllerFactory
{
WindsorContainer container;
// The constructor:
// 1. Sets up a new IoC container
// 2. Registers all components specified in web.config
// 3. Registers all controller types as components
public WindsorControllerFactory()
{
// Instantiate a container, taking configuration from web.config
container = new WindsorContainer();
// Also register all the controller types as transient
var controllerTypes =
from t in Assembly.GetExecutingAssembly().GetTypes()
where typeof(IController).IsAssignableFrom(t)
select t;
foreach (Type t in controllerTypes) {
//container.AddComponentLifeStyle(t.FullName, t, LifestyleType.Transient);
container.Register(Component.For(t).Named(t.FullName).LifeStyle.Transient);
}
container.Install(new WindsorInstaller());
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType != null)
{
return (IController)container.Resolve(controllerType);
}
return null;// base.GetControllerInstance(requestContext, controllerType);
}
}
非常感谢
理查德
【问题讨论】:
-
您使用的是什么 WindsorControllerFactory?如果是自定义的,请发布代码。如果是 MVCContrib,是什么版本?
-
你是如何注册控制器的?
-
更新了关于以前 cmets 的问题.. 感谢 Mauricio
标签: asp.net-mvc-2 castle-windsor