2011-01-04 1 views
5

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

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

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

Client app.config:

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

Скорее всего, ваша конфигурация не используется, а ваш клиент построен из конфигурации по умолчанию. Проверьте, что имя в вашем сервисном элементе аналогично типу службы в директиве ServicHost (файл .svc), включая пространства имен. Вы также можете проверить это в WSDL. –

+0

Я не упоминал об этом в сообщении, поскольку пытался сохранить его простым, но у меня есть две привязки, а другая - net.tcp, которая проходит без каких-либо проблем, отсюда и мое замешательство. – Cragly

ответ

7

- Ладислав Mrnka указал мне в правильном направлении с этим. Огромное спасибо.

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

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

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

Благодарим за помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^