我是BT的初学者,我正在使用VS.net 2013 BizTalk项目模板构建一个业务流程来调用存储过程。
我正在尝试使用构造消息组件来启动我在Orchestration中定义的消息。当我使用WCF-SQL添加配置端口时,设计器生成消息的类型,并表示我的存储过程的输入参数。
当我尝试编译我的Orchestration时,它会给消息一个“对象引用,方法参数或返回值可能没有基于XSD的类型”,表明我的消息分配不正确。我可以理解错误,但不知道该怎么做。
作业表达
GetVersionInputSchema = new IS_Schema_ERMC.ERMC_dbo.usp_IntegrationServiceChangeTracking_GetVersion();
这是设计者为多部分消息类型的parameters属性分配的类型,它表示存储过程调用。
有谁能让我知道为什么(a)我不能根据XSD架构分配新消息,以及(b)我可以对此问题做些什么。我想在我可以使用它传递给我的端口之前必须分配我的消息(如果我没有,我会得到一个非常明显的错误消息)但似乎我不允许使用分配组件分配我的消息。是什么给了什么?
答案 0 :(得分:1)
在业务流程中构建消息有几种方法。它们都必须在Construct Message块中完成。
使用XmlDocument
。制作你的" GetVersionInputSchema" message的类型为System.Xml.XmlDocument
(在.NET类下)。然后,在MessageAssignment形状中,使用如下代码:
GetVersionInputSchema = new System.Xml.XmlDocument(); GetVersionInputSchema.LoadXml("&#34);
创建一个继承自BTXMessage
的自定义类,实例化该类,添加正文部分,调用.Load()
或.LoadFrom()
方法 - 这是更高级和更复杂的。
我注意到如果你使用方法2,你应该真正使用.NET助手类 - 让它返回XmlDocument
或至少让它包含字符串模板(并调用系统。 Orchestration表达式中的String.Format。)