将 ServiceModel 元数据实用工具工具与 mySAP Business Suite 的 BizTalk 适配器配合使用

可以使用 ServiceModel 元数据实用工具(svcutil.exe)生成 WCF 客户端类或 WCF 服务协定(接口),以用于 mySAP Business Suite 的 Microsoft BizTalk 适配器公开的操作。 运行 svcutil.exe 以生成 WCF 客户端类或 WCF 服务协定后,可以在代码中包含生成的文件,并创建生成的类的实例,或者从生成的接口实现 WCF 服务以在 SAP 系统上执行作。

使用 svcutil.exe 需要提供包含凭据的连接 URI。 由于默认情况下,SAP 适配器禁用连接 URI 中的凭据,因此必须将 svcutil.exe 配置为对 SAP 适配器使用非默认绑定。 还可以在非默认绑定中配置其他绑定属性;例如,若要为 BAPI作创建 WCF 客户端,必须将 EnableSafeTyping 绑定属性设置为 true

以下部分介绍如何配置 svcutil.exe,以及如何使用 svcutil.exe 通过 SAP 适配器生成 WCF 客户端代码或 WCF 服务协定。

为 SAP 适配器配置 svcutil.exe

若要将 svcutil.exe 配置为使用非默认绑定,必须创建 svcutil.exe 的本地副本,然后创建或修改 svcutil.exe.config 配置文件的本地副本。

  1. 创建文件夹,并将 svcutil.exe 复制到新文件夹中。 通常可以在 Windows SDK 安装位置找到 svcutil.exe,特别是 C:\Program Files\Microsoft SDKs\Windows\v6.0\Bin。

  2. 在新文件夹中创建名为 svcutil.exe.config 的文件。

  3. 将绑定和客户端终结点添加到 svcutil.exe.config 文件。 必须从新文件夹运行 svcutil.exe,以确保使用了正确的配置。

    重要

    客户端终结点的名称属性必须指定连接 URI 中使用的方案。 此值区分大小写。

    <configuration>  
      <system.serviceModel>  
        <client>  
          <!-- the name should match the required scheme of the WS-Metadata Exchange endpoint   
          and the contract should be "IMetadataExchange" -->  
          <endpoint name="sap"  
                    binding="sapBinding"  
                    bindingConfiguration="SAPBinding"  
                    contract="IMetadataExchange" />  
        </client>  
        <bindings>  
          <sapBinding>  
            <binding name="SAPBinding" acceptCredentialsInUri="true"/>  
          </sapBinding>  
        </bindings>  
    
      </system.serviceModel>  
    
    </configuration>  
    

    可以在绑定配置中设置 SAP 适配器的任何绑定属性。 例如,您可以指定以下非默认绑定,使用 svcutil.exe 生成用于 BAPI 操作的 WCF 客户端。

<bindings>  
  <sapBinding>  
    <binding name="SAPBinding" acceptCredentialsInUri="true"/>  
  </sapBinding>  
</bindings>  

有关为 svcutil.exe配置非默认绑定的详细信息,请参阅 自定义安全元数据终结点

使用 svcutil.exe 创建 WCF 客户端类或 WCF 服务协定

若要使用 svcutil.exe 为 SAP 适配器生成 WCF 客户端代码或 WCF 服务协定(接口),必须提供一个连接 URI,该 URI 指定 WS-Metadata Exchange (MEX) 终结点以及要为其生成代码 svcutil.exe 的作或作。 还必须在连接 URI 中为 SAP 系统指定连接凭据。

注释

必须先将其配置为使用非默认绑定,然后才能将 svcutil.exe 用于 SAP 适配器;有关如何执行此作的信息,请参阅 为 SAP 适配器配置 svcutil.exe

可以通过以下方式在 SAP 适配器连接 URI 中指定 MEX 终结点和目标操作:

  • 必须在查询字符串中包含“wsdl”参数。 如果它是查询字符串中的第一个参数,则会在问号(?)后面指定它。 如果不是第一个参数,则它应前面有一个和号(>)。

  • 需要在“wsdl”参数后跟随一个或多个“op”参数。 每个“op”参数前面都有一个和号(&),并指定目标操作的节点 ID。

    以下三个示例演示如何使用 svcutil.exe针对各种操作。

    此示例为 RFC_CALCULATE_TAXES 创建 WCF 客户端类。

    .\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Rfc/RFC_CALCULATE_TAXES”

    此示例为 SALESORDER_CREATEFROMDAT201 和 SALESORDER_CREATEFROMDAT202 IDOC 创建 WCF 客户端类。

    .\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Send&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT202//620/Send”

    此示例创建一个 WCF 服务协定,用于从 SAP 系统接收SALESORDER_CREATEFROMDAT201 IDOC。 NODE ID 指定一个接收操作。 由于此示例处理检索元数据,因此无需在连接 URI 的query_string中指定侦听器参数。

    .\svcutil “sap://User=YourUserName;Passwd=YourPassword;Client=800;Lang=EN;@a/YourSAPHost/00?wsdl&op=http://Microsoft.LobServices.Sap/2007/03/Idoc/3/SALESORDER_CREATEFROMDAT201//620/Receive”

重要

必须在命令行上将连接 URI 置于引号中。 否则,svcutil.exe 会尝试检索 SAP 适配器不支持的操作的元数据。 未定义此类尝试的结果。

默认情况下,svcutil.exe 将生成的代码置于output.cs文件中;但是,可以通过设置命令行开关来更改输出文件的名称和 svcutil.exe 使用的其他许多选项。 有关 svcutil.exe 支持的选项的详细信息,请参阅 ServiceModel 元数据实用工具工具(Svcutil.exe)。

Svcutil.exe 不提供搜索操作的功能(例如,使用通配符字符)。 必须为要定位的具体操作显式指定节点 ID。 操作的节点 ID 等效于其消息操作字符串。 不能仅指定用来指代类别的节点 ID。 有关 SAP 适配器显示节点 ID 的详细信息,请参阅 元数据节点 ID

添加适配器服务引用的 Visual Studio 插件提供高级浏览和搜索功能,可以大大简化生成 WCF 客户端类和 WCF 服务合同。 有关添加适配器服务引用插件的详细信息,请参阅 为 SAP 解决方案项目生成 WCF 客户端或 WCF 服务协定