MVC 4 프로젝트 및 Ninject 3 모든 유선 있습니다..net MVC 컨트롤러 차단 Ninject 함께
이제 MVC Controller 메서드에서 가로 채기를 처리하려고합니다.
내가 추가하는 경우이 :
(내 자신의 방법이 차단되지 않지만, 대신에 내가 BeginExecute, EndExecute을 얻고 기본 컨트롤러 클래스의 차단 방법을 폐기하더라도)은 좀 작동kernel.Bind<TT.Controllers.HomeController>().ToSelf().Intercept().With<TT.Interceptors.LoggingInterceptor>();
. 하지만 지금은 괜찮다고 해봅시다.
나는이처럼 내 HomeController의 특정 방법을 차단하려면
는 :kernel.InterceptAround<TT.Controllers.HomeController>(
c => c.Index(),
invocation => doSomethingOnEnter(invocation),
invocation => doSomethingOnExit(invocation)
);
그것은 단순히 작동하지 않습니다. 차단은 결코 해고되지 않습니다.
한편, 내 프로젝트의 일부 일반 서비스 클래스에서 동일한 메소드 차단을 사용하면 작동합니다. 컨트롤러 메소드 만 가로채는 문제가있는 것 같습니다.
kernel.InterceptAround<UrlService>(
c => c.DoSomething(),
invocation => doSomethingOnEnter(invocation),
invocation => doSomethingOnExit(invocation)
);
^이 작동합니다.
아무도 모르게해야합니까?
추신. 나는 WebActivators와 NinjectWebCommon 사용하고 있습니다 :
[assembly: WebActivatorEx.PreApplicationStartMethod(typeof(TT.NinjectWebCommon), "Start")]
[assembly: WebActivatorEx.ApplicationShutdownMethodAttribute(typeof(TT.NinjectWebCommon), "Stop")]
여기에있는 속임수는 콘크리트 컨트롤러 대신 IController에 인터셉터를 적용하는 것입니다. 이 작업을 수행하려면 사용자 정의 컨트롤러 팩토리를 구현하고 등록해야 할 수도 있습니다. – Steven