Конференция ".Net" » Изменение Behaviorы в Windows Communication Foundation (WCF) конт [C#, WinXP]
 
  • isasa © (12.12.07 16:02) [0]
    Изменение Behaviorы в Windows Communication Foundation (WCF) контрактах.

    Есть клиент, работающий с Windows Communication Foundation (WCF).
    Во время выполнения необходимо менять Behavior для Endpoint-ов, минуя запись в
    <Application>.exe.config (т.к. он read only)

    Как это сделать?

    Через Configuration так, но в данном случае идет запись в конфиг файл

           private static void AdvanceConfigurationSettings()
           {
               MIBehaviorExtensionElementEx behavior = new MIBehaviorExtensionElementEx();
               string behaviorType = behavior.GetType().AssemblyQualifiedName;
               string behaviorName = "BehaviorEx";
               string behaviorExtensionsName = "MIBehaviorEx";
               ServiceModelSectionGroup section = null;

               Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

               section = (ServiceModelSectionGroup)config.GetSectionGroup("system.serviceModel");

               if (!section.Extensions.BehaviorExtensions.ContainsKey("MIBehaviorEx"))
                   section.Extensions.BehaviorExtensions.Add(new ExtensionElement(behaviorExtensionsName, behaviorType));
               config.Save(ConfigurationSaveMode.Modified);
               
               EndpointBehaviorElement EndpointElement = new EndpointBehaviorElement(behaviorName);
               EndpointElement.Add(behavior);
               if (!section.Behaviors.EndpointBehaviors.ContainsKey(behaviorName))
                   section.Behaviors.EndpointBehaviors.Add(EndpointElement);

               foreach (ChannelEndpointElement ep in section.Client.Endpoints)
               {
                   ep.BehaviorConfiguration = behaviorName;
               }

               config.Save(ConfigurationSaveMode.Modified);
           }

  • b z (12.12.07 21:02) [1]

    > isasa ©   (12.12.07 16:02)  

    Не совсем понял, что вы добиваетесь, но у ClientBase<> есть много разных конструкторов, можно всякий раз создавать по новому.
    И еще вариант, может поможет, если вам надо что то менять в самих Behavior, к примеру настройку clientCredentials, то у тега есть атрибут "type" через который можно расширять возможности.
  • isasa © (13.12.07 08:42) [2]
    Мне нужна возможность в ран-тайме изменять(дополнять) списки <Behaviors> и <BehaviorExtensions>, а так-же <endpoints> без соранения изменения в <Application>.exe.config. Другими словами, не через Configuration
  • b z (13.12.07 10:22) [3]

    > isasa ©   (13.12.07 08:42) [2]

    Вот непонятно зачем изменять ...
    может вам это надо:
    http://msdn2.microsoft.com/en-us/library/ms730137.aspx
 
Конференция ".Net" » Изменение Behaviorы в Windows Communication Foundation (WCF) конт [C#, WinXP]
Есть новые Нет новых   [118665   +33][b:0][p:0.001]