Windows 서비스에서 호스팅되는 wcf 서비스 라이브러리가 있습니다. 서비스 방법에 대한 호출을 가로 챌 필요가 있습니다. 이 경우의 경우는이 링크에서 볼 수있는 바와 같이 유니티 용기에 WCF를 등록하는 것이 좋습니다 나는 곳으로 이해할 수 없었다 Codeplex.I에서 Unity.WCF 어셈블리에 의해 유사한 접근 방식을 구현하기 위해 노력하고Unity Container에서 WCF 서비스 등록
http://weblogs.asp.net/fabio/archive/2009/03/24/inversion-of-control-with-wcf-and-unity.aspx
내 컨테이너 구성이나 부트 스트 래퍼를 wcf 서비스 라이브러리 (또는 Windows 서비스)에 넣으십시오. 제공된 견고한 샘플 (솔루션 비교)이 없습니다.
내 Windows 서비스의 호스트
개인 UnityServiceHost _serviceHost = NULL; 개인 읽기 전용 UnityContainer _container;
public Service() {
InitializeComponent();
_container = new UnityContainer();
_container.AddNewExtension<Interception>();
_container.RegisterType<ISecurityRepository, SecurityRepository>();
_container.Configure<Interception>().SetDefaultInterceptorFor<ISecurityRepository>(new TransparentProxyInterceptor());
}
protected override void OnStart(string[] args) {
//SecurityService
if (_serviceHost != null) {
_serviceHost.Close();
} else {
_serviceHost = new UnityServiceHost(_container, typeof(SecurityRepository));
_serviceHost.Open();
}
}
protected override void OnStop() {
//SecurityService
if (_serviceHost != null) {
_serviceHost.Close();
_serviceHost = null;
}
}
내 서비스 계약
[의 ServiceContract (SessionMode = SessionMode.Required)] 는 공용 인터페이스 ISecurityRepository는 {
이 경우[OperationContract(IsInitiating = true)]
IList<vNavigationTree> GetNavigationTree(string ticket);
[OperationContract(IsInitiating = true)]
string GetSessionGuid(string userName, string IP, string machineName);
}
는 가로 채기 무엇을 work.Briefly하지 않는 것 같다 WCF 서비스가 DI 컨테이너에 등록되어 있고 서비스 메소드가 가로 챌 샘플 프로젝트가 필요합니다.