2012-01-27 66 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,它很可能会解决至少该问题。