有没有人有任何示例代码获取Umbraco MVC与Castle Windsor依赖注入框架一起工作?我遇到的问题是让我的表面控制器使用可注射的参数化构造函数。我知道我做错了什么,但不知道是什么。Umbraco MVC与城堡温莎
我也跟着(非一把umbraco)这里的教程 - http://docs.castleproject.org/Windsor.Windsor-tutorial-part-four-putting-it-all-together.ashx - 这对App_Start基本上意味着我运行这段代码:
var container = new WindsorContainer().Install(FromAssembly.This());
var controllerFactory = new MyCustomControllerFactory(container.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
代码MyCustomControllerFactory
如下。
另外,我实现IWindsorInstaller
包含以下内容:
container.Register(Classes.FromThisAssembly()
.BasedOn<SurfaceController>()
.LifestyleTransient());
我得到的例外是“支持Umbraco.Web.Mvc.RenderMvcController发现服务的成分,不”,由GetControllerInstance
抛出
public class TestSurfaceController : SurfaceController
{
public TestSurfaceController(INameService nameService)
{
....
}
}
如果任何人有一些示例代码工作我会很感激:方法时,我称之为地面控制器与parametised构造如下。我之前用Umbraco连接了Ninject,但没有遇到任何问题,但是在这个项目中,我被绑定到温莎城堡并且无处不在!提前致谢。
MyCustomControllerFactory.cs:
public class MyCustomControllerFactory : DefaultControllerFactory
{
private readonly IKernel kernel;
public FastStartControllerFactory(IKernel kernel)
{
this.kernel = kernel;
}
public override void ReleaseController(IController controller)
{
kernel.ReleaseComponent(controller);
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", requestContext.HttpContext.Request.Path));
}
return (IController)kernel.Resolve(controllerType);
}
}
上谢谢你这么多的宝贵时间这个。我几乎没有时间来测试它,但这一切都非常有意义。一旦我尝试过,我一定会报告回来。 – getsetcode
你的要点中的对象工厂事情复杂一点,但它的工作。干杯! –