2014-06-17 5 views
0

등록 예를 제어 :WcfFacility : 서비스의 라이프 스타일을

 container.Register(Component.For<IFooService>().ImplementedBy<FooService>().AsWcfService<IFooService>(new DefaultServiceModel().Hosted()).LifestyleTransient()); 

SVC는 :

<%@ServiceHost language="C#" Debug="true" Service="Service.FooService" 
Factory="Castle.Facilities.WcfIntegration.DefaultServiceHostFactory, Castle.Facilities.WcfIntegration" %> 

WCF는 IIS에서 호스팅되는 내가 WcfStorm를 사용하여 엔드 포인트에 충돌 할 때의 ctor는 모든 요청에 ​​따라 호출되지 않습니다 . 클라이언트 측 프록시를 다시 생성하면 ctor가 다시 호출됩니다. 서비스 수명주기를 클라이언트 측 프록시에 어떻게 연결할 수 있습니까?

+0

일반적으로 서비스 수명주기는 클라이언트 프록시와 아무 관련이 없습니다. 이것은 Remoting이 아닙니다. –

+0

물론 나는 그것을 이해합니다. 그러나 이것은 제가 관찰하는 행동을 분명히하지는 않습니다. – Marius

답변

0

Transient는 Transient이어야합니다. 즉, Castle.Windsor가 요청하면 새로운 서비스 인스턴스를 생성합니다. 서비스가 중단 될 때마다 이런 일이 발생하지 않았다는 혼란이있었습니다. WCF 스택은 기본적으로 "PerSession"인 "InstanceContextMode"로 정의되는 서비스 수명에 대한 자체 아이디어를 가지고 있기 때문입니다. InstanceContextMode를 "PerCall"로 변경하면 Castle은 (I) 예상대로 서비스를 시작/종료합니다.

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
public class FooService : IFooService { .. }