Hay 2 opciones.
Opción 1. Trabajar con canales.
Si está trabajando con canales directamente, .NET 4.0 y .NET 4.5 tienen el ConfigurationChannelFactory. El ejemplo de MSDN se ve así:
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();
como ha señalado Langdon, puede utilizar la dirección de punto final del archivo de configuración simplemente pasando en nulo, como esto:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
Esto se discute en el MSDN documentation.
Opción 2. Trabajar con proxies.
Si está trabajando con proxies generados por código, puede leer el archivo de configuración y cargar un archivo ServiceModelSectionGroup. Hay un poco más de trabajo que implica que el simple uso de la ConfigurationChannelFactory
pero al menos se puede continuar utilizando el proxy generado (que bajo el capó utiliza un ChannelFactory
y gestiona el IChannelFactory
para usted.
Pablo Cibraro muestra un buen ejemplo de esto aquí : Getting WCF Bindings and Behaviors from any config source
Para cualquiera que esté buscando esto, eche un vistazo a esta respuesta: http://stackoverflow.com/a/839941/592732 – MarioVW