-
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