Wshttpbinding переведен на базовый - PullRequest
0 голосов
/ 17 января 2011

У меня есть сервис WCF, состоящий из двух проектов:

  1. Сервисная библиотека WCF
  2. Веб-приложение WCF

Первый проект имеет сервисный вызов IMyService, реализованный MyService. Это настраивается с помощью привязки WS, и если я нажимаю F5 в этом проекте, WCFTestClient отрисовывает привязку WS. В веб-приложении у меня есть файл .svc с этой разметкой с таким же именем

 <%@ ServiceHost Language="C#" Debug="true" Service="[Namespace].MyService" %>

Если я нажму F5 в этом проекте, он отобразит BasicHttpBinding. То же самое в клиенте. Почему?

Ответы [ 3 ]

2 голосов
/ 18 января 2011

Я только что проверил, что проект библиотеки служб WCF по умолчанию создает app.config с WSHttpBinding, используемым для службы по умолчанию.Когда вы запускаете WCFTestClient, он всегда использует эту локальную конфигурацию.Если вы хотите использовать WCFTestClient для тестирования дополнительных сервисов, вы должны добавить их конфигурацию в эту конфигурацию.Этот конфиг никогда не используется ни для чего другого.

Приложение службы WCF использует web.config.В WCF 4.0 он использует упрощенную конфигурацию, которая добавляет конечные точки на основе некоторых предопределенных условий.По умолчанию он добавляет BasicHttpBinding конечную точку ко всем службам, предоставляемым через HTTP с общим ServiceHostFactory.

0 голосов
/ 25 ноября 2011

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

Во-первых, какую версию Visual Studio вы используете? Поскольку ничего не сказано, я предполагаю, что это последняя версия VS2010 с SP1.

Допустим, у вас есть решение для видеостудии, в котором есть два проекта, один - это библиотека служб WCF, другой - приложение WCF, оба созданы с использованием шаблона проекта по умолчанию без каких-либо ручных настроек.

  • В библиотеке служб WCF будет файл app.config со следующей строкой:

короче говоря, Visual Studio 2010 (SP1) по умолчанию использует wsHttpBinding для проектов библиотеки служб WCF.

  • Проект приложения-службы WCF, однако, будет иметь файл web.config, который не содержит явного определения конечной точки, и в этом случае используется привязка конечной точки по умолчанию: basicHttpBinding.

ОП сказал «Когда я нажал F5 в этом проекте…», это очень вводящее в заблуждение утверждение. Что значит «нажать F5 на проекте»? Вы имеете в виду, что вы выбрали узел проекта в дереве решений, а затем нажали F5? в этом случае то, что произойдет, всегда будет зависеть от того, какой проект задан в качестве начального проекта в решении (а не от того, какой узел проекта в настоящее время выбран в пользовательском интерфейсе Visual Studio).

Если проект приложения-службы WCF является начальным проектом, нажатие клавиши F5 НЕ приведет к запуску тестового клиента WCF, вместо этого в IE будет отображаться папка проекта.

Если проект библиотеки служб WCF является начальным проектом, будет запущен тестовый клиент WCF, и это только потому, что в разделе отладки окна свойств проекта параметры запуска по умолчанию имеют следующие параметры: /client:"WcfTestClient.exe"

0 голосов
/ 18 января 2011

Как настроен ваш конфигурационный файл?Если вы сконфигурируете конечную точку для использования wshttpbinding, то именно эту следует использовать.

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

Спасибо, Роберто Лопес.

...