wsHttpBinding меняет базовыйHttpBinding в клиентском app.config - PullRequest
5 голосов
/ 05 января 2011

В службе 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>

1 Ответ

8 голосов
/ 05 января 2011

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

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

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

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

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

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