2012-01-27 79 views
1

我想調用一個IIS託管的WCF Web服務,該服務只是從BizTalk業務流程返回當前日期。此服務沒有輸入參數。在BizTalk Orchestration中沒有輸入參數調用WCF服務

請忽略第一個Receive_1和最後一個Send_1形狀,因爲我剛剛使用它們開始使用此業務流程。我的業務流程是這樣的:

enter image description here

我用「添加生成項目......」嚮導生成的引用添加到業務流程中的Web服務。我的Web服務定義是這樣的:

[ServiceContract] 
public interface ICalculator 
{ 
    [OperationContract] 
    DateTime GetLastExecutionDate(); 
} 

public class CalculatorService : ICalculator 
{ 

    public DateTime GetLastExecutionDate() 
    { 
     return DateTime.Now.AddMonths(-6); 
    } 
} 

後我加入了生成的參考BizTalk項目,嚮導創建像下面一組端口和多聲部的消息:

enter image description here

我有也創造了當地的消息像下面這些調用之間傳輸數據:

enter image description here

現在,我已經閱讀了無處不在,我需要構建InputMessage以調用不帶參數的Web服務。

有些論壇/網站說我需要簡單地創建一個空白ConstructMessage形狀dateRequest消息的消息類型。這樣做雖然該項目不編譯,我得到以下錯誤信息:

enter image description here

而且other suggested item是一個空白文檔做MessageAssignment。所以在我的業務流程中的MessageAssginment形狀有以下幾點:

xDoc = new System.Xml.XmlDocument(); 
xDoc.LoadXml("<GetLastExecutionDate/>"); 
dateRequest.parameters = xDoc; 

這枚編譯,並得到的部署,我的BizTalk情況下得到的懸浮但下列情況除外:

沒有執行發送管道故障: 「Microsoft.BizTalk.DefaultPipelines.XMLTransmit, Microsoft.BizTalk.DefaultPipelines,版本= 3.0.1.0,文化=中立, 公鑰= 31bf3856ad364e35」 源: 「XML彙編器」 發送端口: 「REDACTED_1.0.0.0_REDACTED.ExportData_WCFPort_dace989afd9cd9c5 「 URI:「http://localhost/COMPANYNAME/WCFService/Service.svc」原因:這 彙編不能檢索使用這種類型的文檔規範: 「GetLastExecutionDate」。

並通過到服務的參數數據:

所以我的問題是:我如何調用WCF服務,不期待任何輸入參數。

回答

0

您可能需要在消息分配形狀中使用的字符串中使用XML名稱空間。我建議您根據Web服務模式驗證您的XML字符串,以確保它生成有效的消息。

你也可以使用xsd.exe來創建。您的Web服務架構中的.NET類。

請參閱http://msdn.microsoft.com/en-us/library/aa547985(BTS.20).aspx瞭解在編排中構建消息的完整列表。

1

從visual studio中轉到您的服務請求消息架構文件。

右鍵單擊 - >生成實例。

抓住生成的XML實例並用單引號替換所有雙引號。

然後在你的任務粘貼到您的loadXML()

enter image description here

0

您使用XMLTransmit管道,有可能爲它拋出的錯誤消息

「原因是多重的根本原因:此彙編程序無法使用此類型檢索文檔規範:xxx「

最可能的原因是您沒有模式部署與您正在傳輸的消息相匹配。

但是好消息是在這種情況下不需要XMLTransmit管道。只需將發送管道更改爲PassThruTransmit,它很可能會解決至少該問題。

相關問題