Есть 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();
Как указал Лэнгдон, вы можете использовать адрес конечной точки из файла конфигурации, просто передав NULL, например:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
Это обсуждается в документации MSDN .
Вариант 2. Работа с прокси.
Если вы работаете с сгенерированными кодом прокси, вы можете прочитать файл конфигурации и загрузить ServiceModelSectionGroup . Требуется немного больше работы, чем просто использование ConfigurationChannelFactory
, но по крайней мере вы можете продолжать использовать сгенерированный прокси (который под капотом использует ChannelFactory
и управляет IChannelFactory
для вас.
Пабло Сибраро показывает хороший пример этого здесь: Получение привязок и поведения WCF из любого источника конфигурации