내 자신의 프로젝트를 만들었지 만 성을 사용하여 인터페이스의 구현을 시작하지 못했습니다! 아래에 표시된 ControllersInstaller
, WindsorControllerFactory
클래스를 추가했습니다. 내 컨트롤러는 아래 코드의 마지막 스 니펫입니다. 도와주세요! 감사, 제임스루키 성 윈저와 내 인터페이스의 구현을 만들려고
public class WindsorControllerFactory : DefaultControllerFactory
{
private readonly IKernel kernel;
public WindsorControllerFactory(IKernel kernel)
{
this.kernel = kernel;
}
public override void ReleaseController(IController controller)
{
kernel.ReleaseComponent(controller);
}
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
if (controllerType == null)
{
throw new HttpException(404, string.Format("The controller for path '{0}' could not be found.", requestContext.HttpContext.Request.Path));
}
return (IController)kernel.Resolve(controllerType);
}
}
public class ControllersInstaller : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Classes.FromThisAssembly()
.BasedOn<IController>()
.LifestyleTransient());
}
}
public class HomeController : Controller
{
public IMemberMapper _memberMapper;
public HomeController()
{
}
public HomeController(IMemberMapper memberMapper)
{
_memberMapper = memberMapper;
}
public ActionResult Index()
{
var model = _memberMapper.Map();
return View(model);
}
}
// 글로벌 파일
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
private static IWindsorContainer container;
private static void BootstrapContainer()
{
container = new WindsorContainer()
.Install(FromAssembly.This());
var controllerFactory = new WindsorControllerFactory(container.Kernel);
ControllerBuilder.Current.SetControllerFactory(controllerFactory);
}
protected void Application_End()
{
container.Dispose();
}
}
위의 코드 조각에 전역 파일을 추가했습니다. –
같은 문제가 발생해도 ive가 BootstrapContainer() 메소드 호출을 application_start()에 추가했습니다. 어떤 아이디어? –
@JamesRadford 이렇게 한 후에 응용 프로그램을 다시 시작 했습니까? 또한 약간의 로깅이 도움이됩니다 : 'WindsorControllerFactory'와 다른 관심 장소 (예 :'BootstrapContainer()')에 대한 호출을 기록하여 실제로 발생하는지 확인하십시오. – GolfWolf