Windsor WcfFacility:设置ServiceBehavior属性

时间:2016-03-21 18:49:41

标签: castle-windsor wcffacility

我正在使用Windsor的WCF工具托管服务,但我无法通过ConcurrencyMode设置ServiceBehaviorAttributeServiceBehaviorAttribute。我已经看到了两个显然应该起作用的选择(但是试图都无济于事):

  1. IServiceBehavior注册为Description
  2. 的组件
  3. 修改WCF注册中Behaviors配置回调中的OnCreated AddExtensions集合。
  4. 我尝试过的第三种方法是使用ServiceBehaviorAttribute,但这会导致异常,因为行为列表中已经存在&(默认情况下?)。方法2的情况也是如此,但在这种情况下,我可以将其删除并添加新的,或修改现有条目。

    除了从服务中删除“删除ServiceBehaviorAttribute”的行之外,似乎没有任何相关文档,这显然是因为它可能与WcfFacility发生冲突,这真是令人沮丧。

    有人能指出我如何正确地做到这一点?任何提示都表示赞赏!

1 个答案:

答案 0 :(得分:0)

不幸的是我没有正确测试。修改ServiceBehaviorAttribute操作中Behaviors属性Description列表中OnCreated的属性实际上是按预期工作的。

样本注册:

container.Register(Component.For<IWCFWarehouseServiceAsyncCallback>()
    .ImplementedBy<WarehouseService>()
    .AsWcfService(new DefaultServiceModel()
        .AddBaseAddresses(baseAddress)
        .OnCreated(host =>
        {
            var sb = host.Description.Behaviors.Find<ServiceBehaviorAttribute>();
            sb.UseSynchronizationContext = false;
            sb.ConcurrencyMode = ConcurrencyMode.Reentrant;
        })
       .AddEndpoints(WcfEndpoint.BoundTo(binding).At("WarehouseService"))));