0

注册示例:

        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。服务生命周期如何与客户端代理耦合?

4

1 回答 1

0

Transient 的行为与 Transient 一样,这意味着 Castle.Windsor 将根据请求创建一个新的服务实例。混乱来自这样一个事实,即每次服务被击中时都不会发生这种情况。原因是 WCF 堆栈有自己的服务生命周期概念,由默认为“PerSession”的“InstanceContextMode”定义。如果我将 InstanceContextMode 更改为“PerCall”,Castle 将按照 (I) 的预期启用/停用服务。

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class FooService : IFooService { .. }
于 2014-06-18T06:12:26.923 回答