Ci sono 2 opzioni.
Opzione 1. Utilizzo dei canali.
Se si sta lavorando direttamente con i canali, .NET 4.0 e .NET 4.5 ha il ConfigurationChannelFactory. L'esempio a MSDN si presenta così:
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();
Come sottolineato da Langdon, è possibile utilizzare l'indirizzo dell'endpoint dal file di configurazione semplicemente passando in nulla, in questo modo:
var factory1 = new ConfigurationChannelFactory<ICalculatorChannel>(
"endpoint1",
newConfiguration,
null);
ICalculatorChannel client1 = factory1.CreateChannel();
Questo è discusso nel MSDN documentation.
Opzione 2. Utilizzo di proxy.
Se si sta lavorando con i proxy generati dal codice, è possibile leggere il file di configurazione e caricare uno ServiceModelSectionGroup. C'è un po 'più di lavoro coinvolti che semplicemente utilizzando il ConfigurationChannelFactory
, ma almeno si può continuare a utilizzare il proxy generato (che sotto il cofano utilizza un ChannelFactory
e gestisce il IChannelFactory
per voi.
Pablo Cibraro mostra un bel esempio di questo qui : Getting WCF Bindings and Behaviors from any config source
Per chi cerca questo, dai un'occhiata a questa risposta: http://stackoverflow.com/a/839941/592732 – MarioVW