使用 WCF LOB 适配器 SDK 部署适配器

若要部署适配器,必须将适配器程序集安装到全局程序集缓存(GAC),然后在 machine.config 文件中注册适配器。

将适配器程序集安装到 GAC 中

在使用“添加适配器服务引用插件”命令在 Visual Studio 中使用适配器,或在 BizTalk Server 中使用“消费适配器服务”加载项功能之前,必须将程序集安装到 GAC 中。 只有强名称的程序集才能安装到 GAC 中。

注释

若要完成此过程,必须使用对 GAC 具有写入权限的帐户登录。 本地计算机上的管理员帐户具有这些权限。

配置强名称程序集密钥文件

  1. 在 Visual Studio 中,加载需要强名称的适配器项目文件。

  2. 打开 Visual Studio 命令提示符。

  3. 在命令提示符处,从要存储密钥文件的文件夹键入以下命令,然后按 Enter:

    sn /kfile_name.snk

    示例: sn /k EchoAdapter.snk

    命令行上显示一条确认消息:密钥对写入到<file_name>.snk,

  4. 在 Visual Studio 解决方案资源管理器中,右键单击该项目,然后单击“ 属性”。

  5. 在左窗格中,展开 “通用属性”,然后单击“ 程序集”。

  6. 在右窗格中,滚动到 “强名称 ”框。

  7. “强名称 ”框中,单击 “程序集密钥文件”旁边的字段,单击“浏览”按钮(...),然后浏览到密钥文件。

  8. 单击密钥文件,单击“ 打开”,然后单击“ 确定”。

  9. 在 Visual Studio 菜单上,单击“ 生成”,然后选择“ 生成解决方案”。

注释

如果适配器程序集依赖于任何其他程序集,请确保这些引用的程序集使用强名称进行签名;否则将收到错误。

如果您有源代码,则可以按照前述方法使用强名称重新编译。 如果引用的程序集属于第三方,并且您无法确保该程序集被赋予强名称,那么您可以将其反汇编,然后再赋予强名称重新组装。

原始程序集将被覆盖,因此,如果要保留原始版本,请确保先创建其备份副本,然后再继续执行以下步骤。

使用 Microsoft 中间语言(MSIL)反汇编器来拆解程序集:

  • ILDASM thirdparty.dll /out:thirdparty.il

    使用 MSIL 汇编器重新组装带有强名称的程序集:

  • ILASM thirdparty.il /dll /key=strongkeyfile.snk

在 GAC 中安装程序集

  1. 验证适配器是否已签名。

  2. 打开 Visual Studio 命令提示符。

  3. 键入以下命令:

    gacutil.exe /if "<程序集 .dll 文件的路径>"

  4. 这会将程序集安装到全局程序集缓存中,替换具有相同程序集名称的任何现有程序集。

在 Machine.config 中注册适配器

使用 WCF LOB 适配器 SDK 开发的适配器显示为 WCF 绑定。 有关详细信息,请参阅 Microsoft.ServiceModel.Channels.Common.AdapterBinding。 在 WCF 中通过 system.ServiceModel 内的 <bindingExtensions> 部分注册适配器绑定,并通过 system.ServiceModel 内的 <bindingElementExtensions> 部分注册适配器传输绑定元素。

可以使用文本编辑器手动编辑 machine.config 文件。

手动编辑 machine.config 文件

  1. 编辑位于 Microsoft .NET 配置文件夹中的 machine.config 文件。 为此,请单击“ 开始”,单击“ 运行”,键入记事本 <Windows 安装路径>\Microsoft.NET\Framework\<version>\CONFIG\machine.config,然后单击“ 确定”。

  2. 更新 machine.config 文件。 如果该文件不包含 system.serviceModel 节,请在配置文件末尾添加以下部分,但在结束根标记之前。

    注释

    将“myAdapterBinding”、版本、区域性和其他特定于程序集的信息替换为适配器的信息。

    <system.serviceModel>  
      <extensions>  
        <bindingExtensions>  
            <add name="myAdapterBinding" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingCollectionElement,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken= fafafafafafafafa" />  
        </bindingExtensions>      <bindingElementExtensions>  
            <add name="echoAdapter" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingElementExtension,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37f23b4adb996dcf" />  
          </bindingElementExtensions>  
      </extensions>  
    </system.serviceModel>  
    
    • 或-

      如果 machine.config 文件包含 system.serviceModel 部分,请确定缺少哪些元素并添加它们,并将“MyAdapter”和其他信息替换为适配器的信息。

    <extensions>  
      <bindingExtensions>  
            <add name="myAdapterBinding" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingCollectionElement,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken= fafafafafafafafa" />  
      </bindingExtensions>  
          <bindingElementExtensions>  
            <add name="echoAdapter" type="Microsoft.Adapters.Samples.Echo.EchoAdapterBindingElementExtension,EchoAdapter, Version=0.0.0.0, Culture=neutral, PublicKeyToken=37f23b4adb996dcf" />  
          </bindingElementExtensions>  
    </extensions>  
    
  3. 关闭并保存 machine.config 文件。

    还可以使用 服务配置编辑器 修改 machine.config 文件。

使用服务配置编辑器编辑 machine.config 文件

  1. 打开 服务配置编辑器。 有关详细信息,请参阅 服务配置编辑器

  2. 在树视图窗格(标记为 “配置”)中,展开节点树。 单击 “高级 ”文件夹,单击 “扩展 ”文件夹,然后选择绑定扩展元素。

    服务配置编辑器。

  3. 创建新的绑定扩展。 单击“ 新建 ”按钮打开“扩展 配置元素编辑器 ”对话框。 在 配置名称中,输入扩展的唯一名称,例如 MyAdapterExtension

    扩展配置元素编辑器

  4. 单击 “类型” 字段,然后单击省略号按钮(...)打开“ 绑定扩展类型浏览器 ”对话框。

  5. 单击全局程序集缓存 (GAC) 图标列出 GAC 中的 DLL。

  6. 单击适配器程序集。

    显示绑定扩展类型浏览器的屏幕截图。

  7. 单击 “打开 ”按钮以选择程序集。

  8. 在“ 绑定扩展类型浏览器 ”对话框中,单击实现绑定集合元素的类型名称。

    显示用于选择实现绑定集合元素的类型名称的位置的屏幕截图。

  9. 单击“ 打开 ”按钮以选择类型。

  10. 单击 “确定 ”关闭 “扩展配置元素编辑器 ”对话框。

  11. 绑定扩展编辑器的详细信息窗格中,验证绑定扩展是否显示。 在下图中,突出显示了 MyAdapterExtension。

    添加了扩展的服务配置编辑器。

  12. 关闭 服务配置编辑器

另请参阅

使用 WCF LOB 适配器 SDK 部署适配器