有沒有人有任何示例代碼獲取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
你的要點中的對象工廠事情複雜一點,但它的工作。乾杯! –