我很難找到一個資源或在線教程,明確引導您設置一個WF4工作流活動,可以調用外部Web服務。我遇到的所有視頻和在線示例都只是演示瞭如何使用作爲Visual Studio解決方案一部分的Web服務,但是我的情況需要在非Microsoft服務器上調用Web服務。WF4 - 如何使用外部Web服務?
我有一個服務引用添加到我的VS2010工作流控制檯項目中的有問題的Web服務,它指向外部Web服務的WSDL。到目前爲止,這麼好(我認爲)。我有一個非常基本的工作流程序,使用SendAndReceiveReply工作流程控制與外部服務器進行通信,並且我相信我的發送部分配置正確。然而,ReceiveReplyForSend給我帶來了麻煩,而且我不確定我是否有其內容選項設置正確的方式。我叫調用FileCheck的操作,這在目前用於測試目的始終返回1這樣的值:
<SOAP-ENV:Envelope>
<SOAP-ENV:Body>
<FileCheckResponse>
<FileCheckResult>1</FileCheckResult>
</FileCheckResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
如果我嘗試運行這一點,但是,我得到的錯誤「形成嚴重SOAP消息「。對於它的價值,我的ReceiveReplyForSend具有一個名爲FileCheckResult的單個參數,但我不知道這是否是獲得上述值的正確方法。
我可以在任一活動中放置一個斷點,但我不知道該如何看看SOAP調用的外觀。有人可以給我一些工作流程的發送/回覆調試提示,或者指導我如何在WF4中使用外部Web服務的一個很好的分步教程方向?
2011年2月2日更新:感謝Maurice的建議,我現在看到了什麼是失敗。我的工作流中的Web服務調用失敗,因爲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」,但無法找到它,所以我敢打賭,我忽略了某個地方的默認設置。
2011年2月8日更新:莫里斯的最新技巧做到了!我需要將適當的名稱空間添加到ServiceContractName屬性中,以便我的發送工作流活動。
謝謝,莫里斯!這有很大的幫助。我能夠在沒有任何問題的情況下向外部服務添加服務引用,但是同時使用Fiddler和WCF Test Client,我現在可以看到我的Web服務調用失敗,因爲我的Visual Studio工作流程沒有生成對適當的命名空間。有關更多詳細信息,請參閱上述更新 – Derek 2011-02-07 20:12:39