Мне очень трудно найти ресурс или онлайн-учебник, в котором подробно рассказывается о настройке рабочего процесса WF4, который может вызывать внешний веб-сервис.Все видео и онлайн-примеры, с которыми я сталкивался, просто демонстрируют, как использовать веб-сервис, который является частью вашего решения Visual Studio, но моя ситуация влечет за собой обращение к веб-сервису на сервере не от Microsoft.
У меня есть ссылка на службу, добавленная в мой проект консоли рабочего процесса VS2010 для рассматриваемой веб-службы, и она указывает на WSDL внешней веб-службы.Пока все хорошо (я думаю).У меня есть очень простая последовательность рабочих процессов, использующая элемент управления SendAndReceiveReply для взаимодействия с внешним сервером, и я считаю, что часть Send настроена правильно.Однако ReceiveReplyForSend доставляет мне неприятности, и я не уверен, правильно ли настроены параметры Content .Я вызываю операцию с именем FileCheck , которая в настоящий момент для целей тестирования всегда возвращает значение 1, например:
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<FileCheckResponse>
<FileCheckResult>1</FileCheckResult>
</FileCheckResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Если я пытаюсь выполнить это, яполучить ошибку «Плохо сформированное SOAP-сообщение».Что бы это ни стоило, у моего ReceiveReplyForSend есть один настроенный параметр с именем FileCheckResult , хотя я не знаю, является ли это правильным способом получения вышеуказанного значения.
Я могу поставить точку остановав любом случае, но я понятия не имею, как увидеть, как выглядит вызов SOAP в этот момент.Может ли кто-нибудь дать мне несколько советов по отладке при отправке / ответе рабочего процесса или подскажет, как получить пошаговое руководство по использованию внешнего веб-сервиса в WF4?
Обновление за февраль2, 2011: Благодаря предложению Мориса я точно вижу, что сейчас терпит неудачу.Вызов веб-службы в моем рабочем процессе не выполняется, поскольку Visual Studio создает ссылку на неправильное пространство имен в моем рабочем процессе Отправить вызов.Вот один бит XML, который неверен в сообщении SOAP - для краткости я остановлюсь на остальной части конверта SOAP:
<FileCheck xmlns="http://tempuri.org/">
Это то, что генерирует тестовый клиент WCF, который получаетуспешное возвращаемое сообщение:
<FileCheck xmlns="http://someserver.org/test/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
Вероятно, это действительно новый вопрос, но есть ли где-то пропущенная мной настройка, которая регулирует значение xmlns ?Я попытался найти «tempuri» в моем проекте, но его нигде не было, поэтому держу пари, что я где-то пропускаю настройку по умолчанию.
Обновление от 8 февраля 2011 года: Морисапоследний совет сделал свое дело!Мне нужно было добавить правильное пространство имен в свойство ServiceContractName для моей отправки активности рабочего процесса.