2013-08-12 5 views
4

WCF 서비스의 기본 서비스 위치 지정자로 UNITY에서 Ninject로 전환 중입니다. 이 작업을 수행하는 데 사용할 수있는 멋진 NuGet 패키지가 있으며 표준 해상도를 정상적으로 작동시키는 것은 쉽습니다.Ninject 차단이 WCF와 함께 작동하지 않습니다

그러나 WCF 서비스 호출을 가로 채고 싶습니다. 여기에 내가있어 무엇 :

내 SVC 파일 :

public class Service1 : IService1 
{ 


    [Inject] 
    public ISomeManager Manager { get; set; } 


public string GetData(int value) 
{ 
    if(this.Manager != null) 
     this.Manager.DoStuff(); 


    return string.Format("You entered: {0}", value); 
} 

} 

커널이처럼 내장되어 있습니다 :

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<ISomeManager>().To<SomeManager>(); 
    kernel.Bind<IService1>().To<Service1>().Intercept().With<MyInterceptor>(); 
} 

만약 내가 설정 여기

<%@ ServiceHost Language="C#" Debug="true" Service="NinjectWcfApp.Service1" Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %> 

내 서비스입니다 이런 커널은 관리자 인스턴스가 주입되지만 차단이 발생하지 않습니다. 실행 전과 실행 후 무언가를 기록하는 인터셉터는 호출되지 않습니다.

다른 유래 스레드를 사용하는 것이 좋습니다 :

kernel.Bind<Service1>().ToSelf().Intercept().With<MyInterceptor>(); 

나는 매니저가 주입되지 않는, 그렇게한다면. 그런 다음 관리자가 참여하는 생성자를 생성하면 작동하지만 다시는 차단하지 않습니다.

kernel.Bind<Service1>().ToSelf().WithConstructorArgument("manager", kernel.Get<ISomeManager>()).Intercept().With<MyInterceptor>(); 

여기서 내가 뭘 잘못하고 있니? 가상 수 있어야 차단하는

+0

와우 .... 아무도? –

답변

0

모든 방법 :

public virtual string GetData(int value) 
관련 문제