Come connettere un client a un servizio WCF al livello di programmazione?

Sto provando a connettere un’applicazione (il client) a un servizio WCF esposto, ma non attraverso il file di configurazione dell’applicazione, ma nel codice.

Come dovrei andare a fare questo?

Dovrai utilizzare la class ChannelFactory .

Ecco un esempio:

var myBinding = new BasicHttpBinding(); var myEndpoint = new EndpointAddress("http://localhost/myservice"); var myChannelFactory = new ChannelFactory(myBinding, myEndpoint); IMyService client = null; try { client = myChannelFactory.CreateChannel(); client.MyServiceOperation(); ((ICommunicationObject)client).Close(); } catch { if (client != null) { ((ICommunicationObject)client).Abort(); } } 

Risorse correlate:

  • Procedura: utilizzare ChannelFactory

Puoi anche fare ciò che fa il codice generato dal “Service Reference”

 public class ServiceXClient : ClientBase, IServiceX { public ServiceXClient() { } public ServiceXClient(string endpointConfigurationName) : base(endpointConfigurationName) { } public ServiceXClient(string endpointConfigurationName, string remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public ServiceXClient(string endpointConfigurationName, EndpointAddress remoteAddress) : base(endpointConfigurationName, remoteAddress) { } public ServiceXClient(Binding binding, EndpointAddress remoteAddress) : base(binding, remoteAddress) { } public bool ServiceXWork(string data, string otherParam) { return base.Channel.ServiceXWork(data, otherParam); } } 

Dove IServiceX è il tuo contratto di servizio WCF

Quindi il tuo codice cliente:

 var client = new ServiceXClient(new WSHttpBinding(SecurityMode.None), new EndpointAddress("http://localhost:911")); client.ServiceXWork("data param", "otherParam param");