Есть 2 варианта.
Вариант 1. Работа с каналами.
Если вы работаете с каналами напрямую, .NET 4.0 и .NET 4.5 имеет ConfigurationChannelFactory. Пример на MSDN выглядит следующим образом:
ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "Test.config";
Configuration newConfiguration = ConfigurationManager.OpenMappedExeConfiguration(
fileMap,
ConfigurationUserLevel.None);
ConfigurationChannelFactory<ICalculatorChannel> factory1 =
new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
new EndpointAddress("http://localhost:8000/servicemodelsamples/service"));
ICalculatorChannel client1 = factory1.CreateChannel();
Как отметил Лэнгдон, вы можете использовать адрес конечной точки из файла конфигурации, просто переходя в нуль, как это:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
Это обсуждается в MSDN documentation.
Вариант 2. Работа с прокси.
Если вы работаете с генерируемыми кодом прокси, вы можете прочитать файл конфигурации и загрузить ServiceModelSectionGroup. Существует немного больше работы, связанной, чем просто использование ConfigurationChannelFactory
, но по крайней мере, вы можете продолжать использовать сгенерированный прокси (что под капотом использует ChannelFactory
и управляет IChannelFactory
для вас.
Пабло Cibraro показывает хороший пример этого здесь : Getting WCF Bindings and Behaviors from any config source
Для тех, кто ищет это, взгляните на этот ответ: http://stackoverflow.com/a/839941/592732 – MarioVW