컨트롤러 및 해당 종속성이 캐슬을 사용하여 (DI/IoC) 패턴을 따라 등록 될 때 '내 컨트롤러에서이 객체에 대해 정의 된 매개 변수없는 생성자'가 표시됩니다. 윈저. 누군가가 다음을 보면서 그것을 볼 수 없기 때문에 내 오류를 볼 수 있습니까? Global.asax에에 등록IoC Castle Windsor -이 객체에 대해 정의 된 매개 변수없는 생성자 없음
는코드
public class MyApplication : System.Web.HttpApplication
{
public MvcApplication()
{
this.container = new WindsorContainer().Install(new DependencyInstaller());
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
GlobalConfiguration.Configuration.Services.Replace(typeof(IHttpControllerActivator),
new WindsorActivator(this.container));
}
}
내 DI
public class DependencyInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<IDatabaseFactory>().ImplementedBy<DatabaseFactory>().LifeStyle.PerWebRequest,
Component.For<IUnitOfWork>().ImplementedBy<UnitOfWork>().LifeStyle.PerWebRequest,
Component.For<IMappingEngine>().ImplementedBy<MappingEngine>().UsingFactoryMethod(() => Mapper.Engine).LifeStyle.Singleton,
Component.For<IFirmTasks>().ImplementedBy<FirmTasks>().LifeStyle.PerWebRequest,
Classes.FromAssemblyContaining<PersonController>().BasedOn<IController>().LifestyleTransient(),
Classes.FromThisAssembly().BasedOn<IHttpController>().LifestyleTransient(),
Classes.FromAssemblyNamed("Core.Firm.Tasks").Where(type => type.Name.EndsWith("Tasks")).WithServiceAllInterfaces().LifestylePerWebRequest(),
Classes.FromAssemblyNamed("Core.Firm.Repository")
.Where(type => type.Name.EndsWith("Repository")).WithServiceAllInterfaces().LifestylePerWebRequest()
);
}
}
내 컨트롤러
public class PersonController : Controller
{
private IFirmTasks tasks;
public PersonController(IFirmTasks tasks)
{
this.tasks = tasks;
}
나는 용 애플리케이션을로드 할 때 컨테이너는 디버그시 스크린 샷마다 해결되는 모든 종속성으로 잘로드됩니다.
사람은 거기에 나의 실패가 어디에 있는지 어떤 생각이야 얻었다. 미리 감사드립니다.
이 많이 설명 : 여기에
는WindsorControllerFactory
의 기본 구현입니다. 덕분에 일리아. –