wsHttpBinding изменяется на basicHttpBinding в клиентском app.config

В службе WCF у меня привязка конечной точки установлена ​​как wsHttpBinding. Однако, когда я использую Visual Studio для добавления ссылки на службу, мои клиенты app.config показывает привязку как basicHttpBinding. Кто-нибудь знает, почему это может происходить?

Моя конечная точка в сервисе web.config (размещенном в IIS 7.5). Получает адрес из baseAddresses

<endpoint address=""
    binding="wsHttpBinding"
    bindingConfiguration="wsHttpServiceBinding"
    contract="MyProject.IMyService" />

Клиент app.config:

<client>
    <endpoint address="http://example.com/MyService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyService"
    contract="Service.MyService" name="BasicHttpBinding_MyService" />
</client>

person Cragly    schedule 04.01.2011    source источник
comment
Скорее всего, ваша конфигурация не используется, а ваш клиент построен по умолчанию. Убедитесь, что имя в элементе службы совпадает с типом службы в директиве ServicHost (файл .svc), включая пространства имен. Вы также можете проверить это в WSDL.   -  person Ladislav Mrnka    schedule 05.01.2011
comment
Я не упоминал об этом в посте, поскольку пытался сделать это простым, но у меня есть две привязки, другая - net.tcp, которая проходит без каких-либо проблем, отсюда и мое замешательство.   -  person Cragly    schedule 05.01.2011


Ответы (1)


- Этим Ладислав Мрнка указал мне правильное направление. Большое спасибо.

Я постарался, чтобы вопрос был простым, поскольку думал, что ответ может быть прямым. Однако я должен был объяснить свою настройку более подробно, поскольку именно здесь и был ответ на мою проблему.

Вместо того, чтобы мой контракт службы (IMyService) находился в моем приложении службы WCF, он был у меня в другом проекте домена, где я храню все свои интерфейсы, чтобы их можно было повторно использовать во многих различных проектах. В моем приложении-службе WCF .web.config имя службы указывало на проект интерфейса, а не на реализацию. Это заставило VS2010 (svcutil.exe) создать прокси и конфигурацию на основе настроек по умолчанию (я предполагаю, что находится в файле machine.config (для WCF 4)).

Итак, чтобы подвести итог для всех, кто может столкнуться с этой проблемой, это было имя службы, указывающее неправильное место. Убедитесь, что имя службы указывает на реализацию (обычно в приложении службы WCF - MyProject.MyService) и что контракт конечной точки указывает на контракт службы (в приложении службы WCF или внешнем проекте - MyProject.IMyService или AnotherProject.Interfaces.IMyService ).

Спасибо за вашу помощь.

person Cragly    schedule 05.01.2011