WcfFacility:控制服务生活方式

时间:2014-06-17 11:22:33

标签: castle-windsor 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。如何将服务生命周期耦合到客户端代理?

1 个答案:

答案 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 { .. }