消息分配 - X2195:对象引用,方法参数或返回值可能没有基于XSD的类型

时间:2015-07-20 10:02:06

标签: biztalk biztalk-2013

我是BT的初学者,我正在使用VS.net 2013 BizTalk项目模板构建一个业务流程来调用存储过程。

我正在尝试使用构造消息组件来启动我在Orchestration中定义的消息。当我使用WCF-SQL添加配置端口时,设计器生成消息的类型,并表示我的存储过程的输入参数。

当我尝试编译我的Orchestration时,它会给消息一个“对象引用,方法参数或返回值可能没有基于XSD的类型”,表明我的消息分配不正确。我可以理解错误,但不知道该怎么做。

作业表达

GetVersionInputSchema = new IS_Schema_ERMC.ERMC_dbo.usp_IntegrationServiceChangeTracking_GetVersion();

这是设计者为多部分消息类型的parameters属性分配的类型,它表示存储过程调用。

有谁能让我知道为什么(a)我不能根据XSD架构分配新消息,以及(b)我可以对此问题做些什么。我想在我可以使用它传递给我的端口之前必须分配我的消息(如果我没有,我会得到一个非常明显的错误消息)但似乎我不允许使用分配组件分配我的消息。是什么给了什么?

1 个答案:

答案 0 :(得分:1)

在业务流程中构建消息有几种方法。它们都必须在Construct Message块中完成。

  1. 您可以使用“变换”形状从源映射到目标消息。如果您的SP呼叫基于收到的消息中的数据,这可能是要走的路 - 特别是如果有大量数据要从该入站消息提供给SP。
  2. 使用XmlDocument。制作你的" GetVersionInputSchema" message的类型为System.Xml.XmlDocument(在.NET类下)。然后,在MessageAssignment形状中,使用如下代码:

    GetVersionInputSchema = new System.Xml.XmlDocument(); GetVersionInputSchema.LoadXml("&#34);

  3. 创建一个继承自BTXMessage的自定义类,实例化该类,添加正文部分,调用.Load().LoadFrom()方法 - 这是更高级和更复杂的。

  4. 此处还有一些详细信息:http://blogs.msdn.com/b/paolos/archive/2009/09/10/4-different-ways-to-process-an-xlangmessage-within-an-helper-component-invoked-by-an-orchestration.aspx

    我注意到如果你使用方法2,你应该真正使用.NET助手类 - 让它返回XmlDocument或至少让它包含字符串模板(并调用系统。 Orchestration表达式中的String.Format。)