Caricare la configurazione da file con WCF 4.0

Nelle versioni precedenti dovevamo fare realmente i salti mortali per poter leggere la configurazione del client da un file diverso dal web.config o dall’app.config. Tempo fa Pablo aveva proposto una soluzione funzionante ma con la controindicazione di doverci portare dietro molto codice che deve essere manutenuto.

Con WCF 4.0 possiamo invece utilizzare una nuova classe: il ConfigurationChannelFactory. Si tratta semplicemente di un’estensione del ChannelFactory che possiamo utilizzare per il nostro scopo:

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();
fileMap.ExeConfigFilename = "c:\global\custom.config";
var openMappedExeConfiguration =
ConfigurationManager.OpenMappedExeConfiguration(fileMap,
ConfigurationUserLevel.None);
ChannelFactory<IMyService> channelFactory =
new ConfigurationChannelFactory<IMyService>(
"MyServiceEndpointName",
openMappedExeConfiguration,
new EndpointAddress("http://localhost/MyService"));

Se invece non conosciamo programmaticamente il nome dell’endpoint nel file di configurazione (parametro “MyServiceEndpointName”) e l’EndpointAddress, possiamo utilizzare il seguente codice:

ChannelFactory<IMyService> channelFactory =
new ConfigurationChannelFactory<IMyService>(
"*", openMappedExeConfiguration, null);

In questo modo il ChannelFactory verrà istanziato con il primo endpoint che specifica il contratto IMyService.

 

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...