修复:基于 WCF 的 SAP 适配器在 BizTalk Adapter Pack 中收到 RFC_FAILURE 错误代码后,远程函数调用不起作用

应用对象
BizTalk Adapters

本文适用于以下产品:

  • BizTalk Adapter Pack 2.0
  • BizTalk Adapter Pack 2010

症状

请考虑以下情形:

  • 客户端程序使用 Microsoft Windows Communication Foundation (WCF 基于) 的 SAP 适配器 (也称为 Microsoft BizTalk Adapter for mySAP Business Suite 3.0) 在 SAP 系统上的 WCF 服务模型中调用一些远程函数调用。

    注意:此适配器包含在 Microsoft BizTalk Adapter Pack 2.0 或 Microsoft BizTalk Adapter Pack 2010 中。

  • 发生网络问题,WCF-SAP 适配器失去与 SAP 系统的连接。

在这种情况下,SAP 系统返回RFC_FAILURE错误代码,并且远程函数调用不起作用。 此外,遇到 ThreadAbortException 异常,您会收到以下错误:

注意

System.Threading.ThreadAbortException:线程正在中止。

at RfcCallReceiveExU (UInt32 , Char* , RFC_PARAMETER* , RFC_PARAMETER* , RFC_PARAMETER* , RFC_TABLE* , char** )

at Microsoft.Adapters.SAP.CNativeInvoker.Invoke (CNativeInvoker* , UInt32 connectionHandle, Char* m_szFunctionName)

一段时间后,会遇到许多 RFCException 异常,并且您会收到许多类似于以下内容的错误:

注意

Microsoft.Adapters.SAP.RFCException: Details: ErrorCode=RFC_FAILURE. AdapterErrorMessage=RfcCallReceiveEx 在调用 RFC 时返回的错误:Z_GET_PO_BY_SAP。

此外,在 BizTalk Server 上还会生成以下调用堆栈跟踪:

注意

at Microsoft.Adapters.SAP.RFCException.HelperThrow (Int32 retCode, String additionalErrorMessage)

在 Microsoft.Adapters.SAP.RfcOutboundInvoker.Invoke ()

      

原因

出现此问题的原因是 WCF-SAP 适配器错误地重用了 SAP 系统中的 SAP 通道。

WCF-SAP 适配器收到 RFC_FAILURE 错误代码后,WCF-SAP 适配器遇到错误。 因此,错误地重用了 SAP 系统中的 SAP 通道。

解决方法

累积更新信息

对于 BizTalk Adapter Pack 2010

解决此问题的修补程序包含在 BizTalk Adapter Pack 2010 的累积更新包 2 中。 有关如何获取此累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2572999 适用于 BizTalk Adapter Pack 2010 的累积更新程序包 2

对于 BizTalk Adapter Pack 2.0

解决此问题的修补程序包含在 BizTalk Adapter Pack 2.0 的累积更新程序包 3 中。

有关如何获取累积更新包的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2557150 适用于 BizTalk Adapter Pack 2.0 的累积更新包 3

状态

Microsoft 已确认在 "适用于" 部分中所列的 Microsoft 产品中存在问题。

详细信息

有关如何使用 WCF 服务模型调用 RFC 的更多信息,请访问以下 MSDN 网站:

如何使用 WCF 服务模型调用 RFC有关 BizTalk Server 修补程序的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

2003907 有关BizTalk Server修补程序的信息