【问题标题】:For a BizTalk WCF-SQL adapter in Solicit-Response Send port. How to let adapter handle the response data like XmlPolling?对于请求响应发送端口中的 BizTalk WCF-SQL 适配器。如何让适配器处理像 XmlPolling 这样的响应数据?
【发布时间】:2014-08-01 17:35:17
【问题描述】:

对于使用 For Xml 的 SP 返回一个 xml 作为响应,如果这个 sp 被 WCF 接收位置使用,我们可以将轮询指定为 XmlPolling 以让适配器保持响应的 xml“原样”。但是对于 wcf-sql Solicit-Response 发送端口,它似乎没有相同的方法。目前,我能得到的最好结果是让适配器将 xml 响应视为 CDATA。如下:

<usp_MySPResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TypedProcedures/dbo">
<StoredProcedureResultSet0>
    <StoredProcedureResultSet0 xmlns="http://schemas.microsoft.com/Sql/2008/05/ProceduresResultSets/dbo/usp_MySP">
        <UnNamedColumn0><![CDATA[ <!-- The XML content of sp returned goes here -->
 ....

【问题讨论】:

    标签: sql biztalk


    【解决方案1】:

    假设存储过程使用 FOR XML 子句,您必须设置两个绑定属性才能将结果识别为 Xml:

    • XmlStoredProcedureRootNodeName
    • XmlStoredProcedureRootNodeNamespace

    正是这两个属性告诉适配器它是一个 FOR XML 存储过程。这些本质上与旧版 SQL 适配器相同。

    详情请看:http://msdn.microsoft.com/en-us/library/dd787898.aspx

    没有办法解决这个问题,因此您的 BizTalk 架构必须与这些值匹配。

    【讨论】:

    • XmlProcedure。这就是我要找的。​​span>
    • 另外,请阅读下面 Peter Lindgrens 的回答,指出最相关的部分以确保正确。
    【解决方案2】:

    阅读链接https://docs.microsoft.com/en-us/biztalk/adapters-and-accelerators/adapter-sql/execute-stored-procedures-having-a-for-xml-clause-in-sql-server-using-biztalk 仔细,它说请求模式必须从“Procedures”中选择生成,不可否认的是“TypedProcedures”。因此,请求消息将位于命名空间http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo 中,在 https://docs.microsoft.com/en-us/biztalk/adapters-and-accelerators/adapter-sql/message-schemas-for-procedures-and-functions 但此处指定了“for xml”类型过程的操作。

    总结一下:请求消息是这样的:

    <YOURSPNAME xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo" />
    

    并且端口配置动作头是

    <BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <Operation Name="YOURSPNAME" Action="XmlProcedure/dbo/YOURSPNAME" />
    </BtsActionMapping>
    

    注意请求消息的命名空间和操作动作之间的差异,只有动作中有“Xml”。并且不要忘记指定 (FOR XML) 绑定参数,正如 Johns-305 所回答的那样。

    【讨论】:

    • 感谢您的回答!还是帮人! :)
    猜你喜欢
    • 2012-11-02
    • 2011-09-28
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多