내 MVC 컨트롤러를 MVC 프로젝트의 다른 프로젝트에 배치 할 방법을 찾아야합니다.별도의 어셈블리와 Castle Windsor의 ASP.NET MVC 컨트롤러
나는 가깝다고 생각합니다. Castle Windsor IoC 컨테이너를 설치하고 내 컨트롤러를 다른 프로젝트에 설치했습니다. 나는 그것이 웹에 매달려있는 것 같아 .Config. 추가해야하는 구성 요소가 있습니까? 여기에 내가지고있어 현재 예외는 다음과 같습니다
:
서비스 MySolution.Express.Controllers.HomeController 을 지원하는 어떤 구성 요소가 여기에 를 찾을 수 없습니다내 코드입니다 캐슬 윈저에 관한 Web.Config 부분
<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); }
- 내가 추가 할 필요가 구성 요소가 있는가?
- 이 목표를 달성하기 위해 내가 할 수있는 다른 조치는 무엇입니까?
사용중인 버전? 윈저의 등록 API를 사용하여 컨트롤러를 등록하지 않는 이유는 무엇입니까? –