我正在尝试调用 IIS 托管的 WCF Web 服务,该服务仅从 BizTalk 业务流程返回当前日期。此服务没有输入参数。
请忽略 First Receive_1 和 Last Send_1 形状,因为我刚刚使用它们开始了此编排。我的编排看起来像:
我使用“添加生成的项目...”向导将生成的引用添加到编排中的 Web 服务。我的 Web 服务定义如下所示:
[ServiceContract]
public interface ICalculator
{
[OperationContract]
DateTime GetLastExecutionDate();
}
public class CalculatorService : ICalculator
{
public DateTime GetLastExecutionDate()
{
return DateTime.Now.AddMonths(-6);
}
}
在我将生成的引用添加到 BizTalk 项目后,向导创建了一组端口和多部分消息,如下所示:
我还创建了本地消息来在这些调用之间传输数据,如下所示:
现在,我已经阅读了我可能需要构造 InputMessage 以调用不带参数的 Web 服务的所有内容。
一些论坛/网站说我需要使用 dateRequest 消息的 MessageType 简单地创建一个空白的 ConstructMessage 形状。这样做时,项目无法编译,我收到以下错误消息:
另一个建议的项目是为空白文档执行 MessageAssignment。因此,我的 Orchestration 中的 MessageAssginment 形状具有以下内容:
xDoc = new System.Xml.XmlDocument();
xDoc.LoadXml("<GetLastExecutionDate/>");
dateRequest.parameters = xDoc;
虽然这会编译并部署,但我的 BizTalk 实例会暂停,但出现以下异常:
执行发送管道失败:“Microsoft.BizTalk.DefaultPipelines.XMLTransmit,Microsoft.BizTalk.DefaultPipelines,版本 = 3.0.1.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35”源:“XML 汇编程序”发送端口:“REDACTED_1。 0.0.0_REDACTED.ExportData_WCFPort_dace989afd9cd9c5" URI:" http://localhost/COMPANYNAME/WCFService/Service.svc " 原因:此汇编程序无法使用此类型检索文档规范:"GetLastExecutionDate"。
而传入服务的参数数据为:
所以我的问题是:如何调用不需要任何输入参数的 WCF 服务。