J'ai créé une application ASP.NET MVC et essaie d'utiliser le château de Windsor comme mon CIOPourquoi Castle Windsor essaie-t-il de résoudre mon dossier 'Content' et 'Scripts' en tant que contrôleur?
Cependant, lorsque les contrôleurs tentent de résoudre je reçois « Contenu » et « scripts » dans le paramètre « ControllerName » dans la méthode CreateController(RequestContext requestContext, string controllerName)
. Inutile de dire que ce ne sont pas des contrôleurs. Ils semblent être les dossiers du site Web
Pourquoi essaie-t-il de les enregistrer en tant que contrôleurs?
Comment ignorer ces dossiers ??
grâce
exception de WindsorControllerFactory
En raison de ne pas être en mesure d'afficher l'image je dois décrire - il dit fondamentalement juste
'Le contentcontroller n'a pas été trouvé'
Global.asax.cs
public static IIocContainer Ioc;
protected void Application_Start()
{
InitialiseIocContainer();
RegisterViewEngine(ViewEngines.Engines);
RegisterRoutes(RouteTable.Routes);
StartProfiling();
}
private void InitialiseIocContainer()
{
IWindsorContainer _container = new WindsorContainer();
var controllerTypes = typeof (GidgetController).Assembly.GetTypes();
foreach (var controllerType in controllerTypes.Where((t=>typeof(IController).IsAssignableFrom(t))))
{
_container.AddComponentLifeStyle(controllerType.Name.ToLower(), controllerType, LifestyleType.Transient);
}
_container.AddComponent("a",typeof(IGidgetService), typeof(GidgetService));
_container.AddComponent("b",typeof(IGidgetRepository), typeof(GidgetRepository));
_container.AddComponent("c",typeof(IGidgetValidator), typeof(GidgetValidator));
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(_container));
}
windsorControllerFactory.cs
public IController CreateController(RequestContext requestContext, string controllerName)
{
try
{
controllerName = controllerName.ToLower() + "controller";
var controller = _container.Resolve<IController>(controllerName);
return controller;
}
catch (ComponentNotFoundException)
{
throw new HttpException(404, string.Format("The {0} controller was not found", controllerName));
}
}
merci. Cela a fonctionné parfaitement. – kurasa
MVCContrib ne fait-il pas la même chose que ma réponse? lol – eduncan911