修复: 有可用的更新添加到基于 WCF 的 SAP 适配器从 BizTalk 适配器包 2.0 或 BizTalk 适配器包 2010 ClearRfcContext 绑定属性

适用于: BizTalk Adapters

适用范围

本文适用于︰
  • Microsoft BizTalk 适配器包 2.0
  • Microsoft BizTalk 适配器包 2010

介绍


本文介绍了累积更新可以从 Microsoft BizTalk 适配器包添加到基于 Microsoft Windows 通讯基础 WCF 的 SAP 适配器的ClearRfcContext绑定属性中包含的更新。

症状


请考虑以下情况:
  • 您必须运行 Microsoft BizTalk Server 2006 R2、 Microsoft BizTalk Server 2009年或 Microsoft BizTalk Server 2010 中的计算机。
  • 您可以使用基于 WCF 的 SAP 适配器连接到 SAP R/3 服务器。注意 基于 WCF 的 SAP 适配器包含在 Microsoft BizTalk 适配器包 2.0 或 Microsoft BizTalk 适配器包 2010年。
  • 您创建的 BizTalk 应用程序使用 SAP 适配器调用远程函数调用 (Rfc) 在 SAP R/3 服务器上使用 SAP 全局变量。
  • EnableConnectionPooling绑定属性设置为True时。
在此方案中,您注意到通过 Rfc 返回的数据是不是您所期望的内容。 此外,返回的数据似乎受到以前调用到相同的 RFCs.The ClearRfcContext绑定属性所做的可以防止类似于那些在这种情况下发生的问题。

原因


因为启用了连接池后,相应的 SAP 连接返回到连接池执行 SAP R/3 服务器上的一个 RFC 调用后,将出现此问题。 在下一次的 RFC 调用到达时,相同的 SAP 连接从连接池中提取并用于执行调用。如果 RFC 使用一些全局变量,并且它们被不正确地清理,RFC 下一次使用存储在以前的调用中的全局变量的值。 这种情况可能会导致意外的结果。注意 只有 RFC 使用全局变量,并且全局变量是不正确地清理根据 RFC,将出现此问题。

解决方案


要解决此问题,请应用此更新。 然后,将ClearRfcContext绑定属性设置为True

累积更新信息

BizTalk 适配器包 2010

可以解决此问题的修复程序包含 BizTalk 适配器包 2010 累积更新 1 中。  有关如何获取此更新累积程序包的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 2539794累积更新包 1 BizTalk 适配器包 2010年

BizTalk 适配器包 2.0

此修复程序首次发布的累积更新包 2 BizTalk 适配器包 2.0。 有关如何获取此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2531605 累积更新包 2 BizTalk 适配器包 2.0

更多信息


有关此更新的说明

  • 只有EnableConnectionPooling绑定属性设置为True时才能适用ClearRfcContext绑定属性。
  • 如果没有此更新,基于 WCF 的 SAP 适配器不清除 SAP R/3 上下文。 因此,行为等同于ClearRfcContext绑定属性设置为False时发生的情况。 默认值为False
  • 当启用了连接池,并ClearRfcContext绑定属性设置为True时,则适配器刷新 SAP R/3 会话,并清除 SAP 服务器端上的所有全局变量。 因此,获得与当前调用的任何状态不影响下一个调用同一个 SAP 连接上。
  • 当启用了连接池并ClearRfcContext绑定属性设置为False时,适配器将不会清除 SAP R/3 会话。 在这种情况下,如果 RFC 使用一些全局变量,这些变量被不正确地清理 RFC 下一次可能使用从当前调用的全局变量中存储的值。 这种情况下产生意外的结果。
  • 由于ClearRfcContext绑定属性需要其他往返到 SAP R/3 服务器,您可能看到小降低性能, ClearRfcContext绑定属性设置为True时。 我们建议只有在 RFC 使用全局变量和 RFC 不清理的全局变量进行适当时将ClearRfcContext绑定属性设置为True
  • 代理方案,如从.NET 代码中使用适配器时,您可能想要清除 RFC 调用同一代理/通道实例之间的 SAP R/3 会话。 在此更新中,名为RfcClearContext的新操作时,添加适配器服务引用向导的RFC节点下SapBinding选项。 RfcClearContext操作尝试清除 SAP R/3 上下文并返回下列值之一:
    • True — SAP R/3 上下文的清洗是成功的。 您可以附加调用代理通道上。
    • False -关闭或开发错误时操作试图清理 SAP R/3 上下文的连接。 您应放弃当前的代理/通道,因为任何进一步的调用可能会导致出现通信错误。

参考


有关如何与 SAP 系统建立连接的详细信息,请访问下面的 Microsoft 开发人员网络 (MSDN) 网站:BizTalk Server 修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
2003907 BizTalk Server 修补程序有关的信息