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>();
여기서 내가 뭘 잘못하고 있니? 가상 수 있어야 차단하는
와우 .... 아무도? –