Создать клиент WCF программно - PullRequest
11 голосов
/ 30 октября 2009

У меня есть веб-сайт со службой WCF с поддержкой Silverlight. Служба работает нормально, и я могу без проблем перейти на страницу WSDL в браузере.

Теперь я пытаюсь создать клиент в DLL. Мне нужно создать весь клиент программным путем, потому что он вызывается в DLL, которая по какой-то причине (по замыслу?) Не будет читать раздел ServiceModel из своего собственного файла конфигурации.

Так вот мой код:

Dim endp As EndpointAddress = New EndpointAddress("http://www.mydomain.com/licensing/lic.svc")
Dim bind As WSHttpBinding = New WSHttpBinding()
Dim svc = New lnt.licClient(bind, endp)
Dim rsp = svc.CheckIt(key)

Но когда я вызываю метод svc.CheckIt, я получаю следующую ошибку:

Content Type application/soap+xml; charset=utf-8 was not supported by service http://www.mydomain.com/licensing/lic.svc. 
The client and service bindings may be mismatched.
{"The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'application/soap+msbin1'.."}

Как правильно создать мой клиент, чтобы он правильно "соответствовал" ??
Заранее спасибо !!!

Ответы [ 3 ]

11 голосов
/ 30 октября 2009

Ах --- нашел это. Для ServiceModel в разделе web.config веб-сайта было установлено значение customBinding . Изменил его так, чтобы он соответствовал тому, что отправлял клиент, и теперь он прекрасно работает.

3 голосов
/ 08 декабря 2011

Я столкнулся с этой же проблемой. Более конкретно, мое исправление состояло в том, чтобы обновить тип привязок, которые я использовал. Я использовал wsHttpBindings вместо basicHttpBindings. Это вызывало сбои, поскольку wsHttpBindings использует SOAP 1.2, в то время как basicHttpBindings использует SOAP 1.1, а служба, которую я использовал, требовала SOAP 1.1

0 голосов
/ 06 января 2013

У меня была такая же ошибка. Сервис компилировался, клиентское приложение тоже. Сервисная ссылка в клиентской заявке успешно обновляет ссылку. Я попытался удалить и добавить ссылку еще раз, и это не помогло. Проблема была в удаленном интерфейсе в веб-сервисе.

...