私は彼のプロAsp.Net MVC Frameworkの本(素晴らしい本、btw)からSteven Sandersonの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
Hehe、はい、しかし、各星の点数を数えれば、それらが一意であることがわかります! - いいえ:) – Chance