2016-03-21 22 views
0

Windsor's WCF Facility'i kullanarak bir hizmetimi yaşıyorum, fakat UseSynchronisationContext ve ConcurrencyMode ayarlarını yapamayacağımı ServiceBehaviorAttribute kullanıyordum. WCF tescilinde OnCreated yapılandırma geri aramasında Behaviors arasında Description koleksiyonunu değiştirme IServiceBehavior Windsor WcfFacility: Hizmet SettingBehavior özellikleri

  • için Bileşeni olarak ServiceBehaviorAttribute kaydedilmesi

    1. : İki görünüşte (boşuna hem fakat çalıştı) çalışması gerekir seçenekleri gördüğüm .

    Ben AddExtensions kullanıyor denedim Üçüncü bir yöntem, ama zaten bir ServiceBehaviorAttribute (varsayılan?) Davranışları listesinde var, çünkü o bir istisna ile sonuçlanır. Bu, yöntem 2'de de geçerlidir, ancak bu durumda onu kaldırabilir ve yeni bir tane ekleyebilir veya mevcut girişi değiştirebilirim.

    Bu, WcfFacility ile çakışabileceğinden, hizmetlerden "ServiceBehaviorAttribute'u Kaldırma" bildiren bir satır dışında bununla ilgili hiçbir belgenin görünmemesi gerçekten sinir bozucu bir durumdur.

    Birisi bunu nasıl düzgün yapılacağına işaret edebilir mi? Herhangi bir ipucu takdir edilir!

  • cevap

    0

    Maalesef düzgün bir şekilde test etmedim. OnCreated eyleminin Description özelliğinin Behaviors özelliğinin listesinde ServiceBehaviorAttribute özelliklerinin değiştirilmesi, aslında amaçlandığı gibi çalışır.

    Numune kaydı:

    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")))); 
    
    İlgili konular