我試圖從他的親Asp.Net MVC框架書(偉大的書,順便說一句)實現史蒂文桑德森的WinsorControllerFactory,我絆倒了一個問題。我不確定你需要知道什麼才能制定迴應,但我非常感謝這方面的任何幫助。謝謝!需要幫助Castle.Windsor作爲一個Asp.Net MVC ControllerFactory請
下面的代碼:
WindsorControllerFactory
public class WindsorControllerFactory : DefaultControllerFactory
{
private WindsorContainer _container;
public WindsorControllerFactory()
{
_container= new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
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);
}
}
protected override IController GetControllerInstance(Type controllerType)
{
return (IController)_container.Resolve(controllerType);
}
}
的Web.Config
<castle>
<components>
<component id="MenuRepository"
service="****.IMenuRepository, ****.Model"
type="****.FakeMenuRepository, ****.Model">
</component>
<component id="NewsRepository"
service="****.INewsRepository, ****.Model"
type="****.FakeNewsRepository, ****.Model">
</component>
</components>
</castle>
NewsArticleController
public class NewsArticleController : Controller
{
private INewsRepository _repository { get; set; }
public NewsArticleController(INewsRepository repository)
{
_repository = repository;
}
的Global.asax
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory((new WindsorControllerFactory()));
}
錯誤信息 支持服務****號成分NewsArticleController發現 說明:當前Web的執行過程中發生未處理的異常請求。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。
Exception Details: Castle.MicroKernel.ComponentNotFoundException: No component for supporting the service ****.NewsArticleController was found
Source Error:
Line 29: protected override IController GetControllerInstance(Type controllerType)
Line 30: {
Line 31: return (IController)_container.Resolve(controllerType);
Line 32: }
Line 33: }
這是一個愚蠢的問題,我敢肯定,但以防萬一:您的web.config中實際上沒有星號,對不對?你只是把這些放在模糊的實際命名空間?在我進一步挖掘之前檢查。 – nkirkes 2009-05-22 06:28:13
呵呵,是的,但是如果你計算每個星星的點數,你會發現它們是獨一無二的! - 否:) – Chance 2009-05-22 12:38:54