为 SAP 系统配置客户端绑定

生成 WCF 客户端类后,可以创建 WCF 客户端 (实例) 并调用其方法来使用适用于 mySAP Business Suite 的 Microsoft BizTalk 适配器。 有关如何为 SAP 适配器公开的操作生成 WCF 客户端类和帮助程序代码的信息,请参阅 为 SAP 解决方案项目生成 WCF 客户端或 WCF 服务协定

若要创建 WCF 客户端,必须指定终结点地址和绑定。 终结点地址必须包含有效的 SAP 连接 URI,并且绑定必须是 SAP 绑定 (SAPBinding) 的实例。 有关 SAP 连接 URI 的详细信息,请参阅 创建 SAP 系统连接 URI

可以在代码或配置文件中指定 SAP 绑定和终结点地址。 使用添加适配器服务引用 Visual Studio 插件生成 WCF 客户端类时,还会为项目创建配置文件 (app.config) 。 此文件包含的配置设置反映绑定属性和连接信息 (,但凭据) 除外,在使用添加适配器服务引用插件连接到 SAP 系统时指定的凭据。

在代码中指定绑定和终结点地址

以下代码演示如何通过在代码中指定绑定和终结点地址来创建 WCF 客户端。 最好是使用 WCF 客户端的 ClientCredentials 属性指定 SAP 系统凭据,而不是在为终结点地址提供的连接 URI 中指定 SAP 系统凭据。

// A WCF client that targets an RFC is created  
// by using a binding object and endpoint address  
SAPBinding sapBinding = new SAPBinding();  
EndpointAddress sapAddress = new EndpointAddress("sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00");  
  
RfcClient rfcClient = new RfcClient(sapBinding, sapAddress);  
  
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";  
rfcClient.ClientCredentials.UserName.Password = "YourPassword";  
  
rfcClient.Open();  

在配置文件中指定绑定和终结点地址

以下代码演示如何通过在 app.config 文件中指定绑定和终结点地址来创建 WCF 客户端。

// A WCF client that targets an RFC is created  
// by specifying the client endpoint information in app.config  
RfcClient rfcClient = new RfcClient("SAPBinding_Rfc");  
  
rfcClient.ClientCredentials.UserName.UserName = "YourUserName";  
rfcClient.ClientCredentials.UserName.Password = "YourPassword";  
  
rfcClient.Open();  

以下 XML 显示通过添加适配器服务引用插件为 EMP 表创建的配置文件。 此文件包含前面示例中引用的客户端终结点配置。

<?xml version="1.0" encoding="utf-8"?>  
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">  
    <system.serviceModel>  
        <bindings>  
            <sapBinding>  
                <binding name="SAPBinding" closeTimeout="00:01:00" openTimeout="00:01:00"  
                    receiveTimeout="00:10:00" sendTimeout="00:01:00" receiveIdocFormat="Typed"  
                    generateFlatFileCompatibleIdocSchema="true" maxConnectionsPerSystem="50"  
                    enableConnectionPooling="true" idleConnectionTimeout="00:15:00"  
                    flatFileSegmentIndicator="SegmentDefinition" enablePerformanceCounters="false"  
                    autoConfirmSentIdocs="false"  
                    acceptCredentialsInUri="false" padReceivedIdocWithSpaces="false"  
                    enableBizTalkCompatibilityMode="false" />  
            </sapBinding>  
        </bindings>  
        <client>  
            <endpoint address="sap://CLIENT=800;LANG=EN;@a/YourSAPHost/00?RfcSdkTrace=False&AbapDebug=False&UseSapGui=Without"  
                binding="sapBinding" bindingConfiguration="SAPBinding" contract="Rfc"  
                name="SAPBinding_Rfc" />  
        </client>  
    </system.serviceModel>  
</configuration>  

如果一个项目有多个 WCF 客户端,配置文件中将定义多个客户端终结点条目。 每个 WCF 客户端条目将根据其绑定配置和目标 SAP 系统项目(例如 Rfc 和 Trfc) ) (具有唯一的名称;例如“SAPBinding_Rfc”。 如果多次连接以在项目中创建 WCF 客户端,则会创建多个绑定配置条目,每个连接一个。 这些绑定配置条目将按以下方式命名:SAPBinding1、SAPBinding2 等。 在特定连接期间创建的每个客户端终结点条目都将引用在该连接期间创建的绑定条目。

重要

SAP 适配器显示相同类型 (的不同 SAP 项目,例如 RFC、TRFC 和 IDOC,) 为同一服务协定的不同操作。 例如,两个不同的 RFC(RFC_EXAMPLE_A和RFC_EXAMPLE_B)将出现在同一服务协定 (“Rfc”) 下。 这意味着这两个 RFC 将由同一 WCF 客户端类 RfcClient 调用,并且两个 RFC 的参数将在同一命名空间中声明。 因此,您必须在同一个添加适配器服务引用插件会话期间为两个 RFC 生成 WCF 客户端, (连接) ,以避免在生成解决方案时遇到命名空间冲突。

另请参阅

使用 WCF 服务模型开发 SAP 应用程序
为 SAP 解决方案项目生成 WCF 客户端或 WCF 服务协定
创建 SAP 系统连接 URI