注册示例:
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 :(得分:0)
瞬态将表现得像Transient应该,这意味着Castle.Windsor将根据请求创建一个新的服务实例。令人困惑的是,每次服务被击中时都不会发生这种情况。这样做的原因是WCF堆栈有自己的服务生命周期的概念,由&#34; InstanceContextMode&#34;定义。默认为&#34; PerSession&#34;。如果我将InstanceContextMode更改为&#34; PerCall&#34;,Castle将按照(I)预期的方式对服务进行委托/解除。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class FooService : IFooService { .. }