Как использовать сервис wcf, когда я знаю только его URL - PullRequest
1 голос
/ 01 октября 2008

Мне нужно использовать сервис wcf динамически, когда все, что я знаю, это его URL. У меня нет возможности создать ссылку на службу или веб-ссылку, поскольку мой код на стороне клиента получает URL-адрес из файла конфигурации. Какие классы и методы я могу использовать для этого из пространства имен System.ServiceModel.

Ответы [ 2 ]

3 голосов
/ 01 октября 2008

Если у вас нет интерфейса службы, вы должны, по крайней мере, иметь представление о том, как выглядят сообщения, ожидаемые сервером; в противном случае это будет довольно сложно сделать:)

Но, безусловно, есть способ сделать это. Вы можете начать с создания необработанного сообщения, которое сервер ожидает в качестве ввода, и создать его в объекте Message (я имею в виду System.ServiceModel.Channels.Message). Убедитесь, что вы установили для него все необходимые заголовки, в зависимости от того, какую привязку вы ожидаете использовать для вызова клиента (например, установка правильных учетных данных, правильного MessageVersion и т. Д.).

Затем вы можете просто создать фабрику каналов, используя одну из стандартных общих форм каналов, таких как IRequestChannel или IInputChannel (для односторонних услуг), и использовать фабрику каналов для создания нового канала и вызова службы. То есть что-то вроде:

Message input = Message.CreateMessage( .... );

ChannelFactory<IRequestChannel> factory = new ChannelFactory<IRequestChannel>(binding, endpoint);
IRequestChannel channel - factory.CreateChannel();

Message output = channel.Send(input);
1 голос
/ 01 октября 2008

Если вы знаете контракт, вы можете сделать что-то вроде:

using (WebChannelFactory<IService> wcf = new WebChannelFactory<IService>(new Uri("http://localhost:8000/Web")))

Подробнее здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...