我正在尝试调用IIS托管的WCF Web服务,该服务只是从BizTalk业务流程返回当前日期。此服务没有输入参数。
请忽略First Receive_1和Last Send_1形状,因为我刚刚用它们来开始这个编排。我的业务流程看起来像:
我使用“添加生成的项目...”向导将生成的引用添加到Orchestration中的Web服务。我的Web服务定义如下:
[ServiceContract]
public interface ICalculator
{
[OperationContract]
DateTime GetLastExecutionDate();
}
public class CalculatorService : ICalculator
{
public DateTime GetLastExecutionDate()
{
return DateTime.Now.AddMonths(-6);
}
}
将生成的引用添加到BizTalk项目后,向导创建了一组端口和多部件消息,如下所示:
我还创建了本地消息,以便在这些调用之间传输数据,如下所示:
现在,我已经阅读了所有我需要构建InputMessage以便调用没有参数的Web服务。
有些论坛/网站说我需要简单地创建一个空白的ConstructMessage形状,其MessageType为dateRequest Message。虽然这样做项目不编译,但我收到以下错误消息:
other suggested item是为空白文档执行MessageAssignment。因此,我的Orchestration中的MessageAssginment形状具有以下内容:
xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml("<GetLastExecutionDate/>");
dateRequest.parameters = xDoc;
在编译和部署时,我的BizTalk实例被暂停,但有以下异常:
执行发送管道失败: “Microsoft.BizTalk.DefaultPipelines.XMLTransmit, Microsoft.BizTalk.DefaultPipelines,Version = 3.0.1.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35“来源:”XML汇编程序“发送端口: “REDACTED_1.0.0.0_REDACTED.ExportData_WCFPort_dace989afd9cd9c5” URI:“http://localhost/COMPANYNAME/WCFService/Service.svc”原因:这个 汇编程序无法使用此类型检索文档规范: “GetLastExecutionDate”。
传递给服务的参数数据是:
所以我的问题是:如何调用不期望任何输入参数的WCF服务。
答案 0 :(得分:1)
从visual studio中转到服务请求消息架构文件。
右键单击 - &gt;生成实例。
抓取生成的XML实例,并用单引号替换所有双引号。
然后将其粘贴到作业
中的LoadXml()中
答案 1 :(得分:0)
您可能需要在消息分配形状中使用的字符串中使用XML命名空间。我建议您根据Web服务模式验证XML字符串,以确保它生成有效的消息。
您还可以使用xsd.exe从Web服务架构创建.NET类。
有关在业务流程中构建消息的完整方法列表,请参阅http://msdn.microsoft.com/en-us/library/aa547985(BTS.20).aspx。
答案 2 :(得分:0)
您使用XMLTransmit管道,可能有多个根本原因导致它抛出错误消息
“原因:此汇编程序无法使用此类型检索文档规范:xxx”
最可能的原因是您没有部署与您正在传输的邮件匹配的架构。
但好消息是在这种情况下不需要XMLTransmit管道。只需将send-pipeline更改为PassThruTransmit,它最有可能解决至少这个问题。