Как программно подключить клиента к службе WCF?
Я пытаюсь подключить приложение (клиент) к открытой службе WCF, но не через файл конфигурации приложения, а в коде.
Как я должен идти об этом?
2 ответа:
вам придется использовать ChannelFactory класса.
вот пример:
var myBinding = new BasicHttpBinding(); var myEndpoint = new EndpointAddress("http://localhost/myservice"); var myChannelFactory = new ChannelFactory<IMyService>(myBinding, myEndpoint); IMyService client = null; try { client = myChannelFactory.CreateChannel(); client.MyServiceOperation(); ((ICommunicationObject)client).Close(); } catch { if (client != null) { ((ICommunicationObject)client).Abort(); } }
связанные ресурсы:
вы также можете сделать то, что делает сгенерированный код" ссылка на службу"
public class ServiceXClient : ClientBase<IServiceX>, 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); } }
где IServiceX-это ваш контракт на обслуживание WCF
тогда ваш клиентский код:
var client = new ServiceXClient(new WSHttpBinding(SecurityMode.None), new EndpointAddress("http://localhost:911")); client.ServiceXWork("data param", "otherParam param");