Je dois trouver un moyen de placer mes contrôleurs MVC dans un projet différent du projet MVC.Contrôleurs ASP.NET MVC dans des assemblages distincts et Castle Windsor
Je pense que je suis proche. J'ai installé le conteneur Castle Windsor IoC et j'ai mes contrôleurs dans un autre projet. Je pense qu'il raccroche sur le Web.Config. Y a-t-il un composant que je dois ajouter? Voici l'exception actuelle, je reçois:
Aucun composant pour soutenir le services MySolution.Express.Controllers.HomeController a été trouvé
Voici mon code:
Web.Config partie qui appartient à Castle Windsor
<section name="castle"
type="Castle.Windsor.Configuration.AppDomain.CastleSectionHandler,
Castle.Windsor" />
</configSections>
(....)
<castle>
<components>
</components>
</castle>
Global.ascx
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
ControllerBuilder.Current.DefaultNamespaces.Add("MyProject.Express.Controllers");
}
WindsorControllerFactory.cs
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.AddComponentWithLifestyle(t.FullName,t,
LifestyleType.Transient);
}
protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
return (IController)container.Resolve(controllerType);
}
- Y at-il un élément que je dois ajouter?
- Que puis-je faire d'autre pour atteindre cet objectif?
la version que vous utilisez? Pourquoi n'utilisez-vous pas l'API d'enregistrement de Windsor pour enregistrer les contrôleurs? –