如何配置 Windows Communication Foundation 应用程序进行拦截

必须先安装 BAM 侦听器软件并将应用程序配置为使用 BAM Windows Communication Foundation (WCF) 侦听器服务,然后才能开始收集 BAM 活动数据。 假定已成功安装BizTalk Server及其依赖项,并至少创建了一个 BizTalk 组。

安装 BAM-Eventing 软件

必须先使用 BizTalk Server 安装程序安装 BAM-Eventing 软件,然后才能将 WCF 应用程序配置为使用 WCF 的 BAM 侦听器。 有关安装 BAM-Eventing 软件和注册性能计数器的详细信息,请参阅 安装 BAM-Eventing 软件

配置用于跟踪的 WCF 应用程序

在 WCF 应用程序开始写入 BAM 事件信息之前,必须完成四个任务:

  • 必须使用 BizTalk Server BAM 工具创建观察模型,然后使用 BAM 管理器命令行工具 (bm.exe) 进行部署。

  • 必须使用 BAM 管理器命令行工具 (bm.exe) 创建并部署侦听器配置文件。

  • 运行主机应用程序的用户必须是相应 BAM 活动事件编写器 (bam_< activity>_EventWriter) SQL Server角色的成员,以使应用程序能够读取侦听器配置信息并写入 BAM 活动。

  • 必须修改服务器和客户端应用程序的 App.config 文件才能加载 BAM 跟踪服务。 修改 App.config 文件之后,必须重新启动应用程序。

    只有在成功完成这些任务后,事件才会开始出现在BizTalk Server BAM 数据库中。

部署观察模型

您必须先部署观察模型,然后才能在应用程序中部署侦听器配置文件或捕获 BAM 活动。

使用 bm.exe 部署观察模型
  1. 单击 “开始 ”,然后单击“ 运行 ”打开 Windows 命令提示符。

  2. “打开”字段中键入 cmd,然后单击“确定”。

  3. 使用更改目录命令转至包含要部署的观察模型的目录。 例如, cd c:\businessprocess\Orders

  4. 使用 bm.exe 部署观察模型:

    \Program Files (x86) \Microsoft BizTalk Server <VERSION>Tracking\bm.exe deploy-all -Definitionfile:<definitionfile.xml>

    请确保将definitionfile.xml> 替换为<要部署的观察模型文件的名称。 有关更多选项,请参阅 侦听器管理命令

    注意

    在支持用户帐户控制 (UAC) 的系统上,可能需要具有管理权限才能运行该工具。

  5. 键入 Exit ,然后按 Enter 关闭命令提示符。

部署侦听器配置文件

必须在部署侦听器配置文件之后您的应用程序才能捕获 BAM 活动。

使用 bm.exe 部署侦听器配置文件
  1. 单击 “开始 ”,然后单击“ 运行 ”打开 Windows 命令提示符。

  2. “打开”字段中键入 cmd,然后单击“确定”。

  3. 使用更改目录命令转至包含要部署的侦听器配置文件的目录。 例如, cd c:\businessprocess\Orders

  4. 使用 bm.exe 部署侦听器配置文件:

    \Program Files (x86) \Microsoft BizTalk Server <VERSION>Tracking\bm.exe deploy-interceptor -Filename:<icfile.xml>

    请确保将icfile.xml> 替换为<要部署的侦听器配置文件的名称。

    注意

    可以使用 -Force:True 标志替代与侦听器配置文件中的事件源同名 () 的现有事件源。 如果这样做,请确保使用 get-interceptor 命令备份现有配置。 使用 -Force:True 标志可能会删除所有引用被覆盖的事件源的侦听器配置。

    注意

    在支持用户帐户控制 (UAC) 的系统上,可能需要具有管理权限才能运行该工具。

  5. 键入 Exit ,然后按 Enter 关闭命令提示符。

    如果已部署 WCF 应用程序,则在下一个轮询间隔之前不会加载新配置。 但是,如果对应用程序进行配置后重新启动它,则将立即提取该配置。

将用户添加到相应的 BAM 活动角色

BAM 侦听器框架使用每个活动的 SQL Server 角色控制对活动和配置信息的访问权限。 必须将运行 WCF 应用程序的用户帐户添加到 BAMPrimaryImport 数据库中相应的 BAM 活动角色。

将 Windows Communication Foundation 应用程序配置为加载 BAM 跟踪服务

通过将几个行添加到服务器或客户端应用程序的 App.config 文件,将应用程序配置为加载 BAM 跟踪服务。

若要在 WCF 服务器或客户端应用程序中启用 BAM 跟踪,需要修改 App.config 配置文件以包含其他终结点行为和行为扩展,并添加行为配置属性。 服务和客户端模板的格式类似。

配置 WCF 应用程序时,请注意以下事项。 如果在 App.config 中为同一应用程序定义了多个 BAM 终结点行为(即同一客户端或服务),则 BAM 将采取以下操作。

  • 如果连接字符串不同,BAM 将引发异常。

  • 如果只有轮询间隔不同,BAM 将选择一个行为并继续。 在设计时无法确定将选择哪个行为。

注意

如果连接字符串相同,即意味着它们引用的是同一台计算机,BAM 处理将正常进行。

以下示例 App.config 模板是为 WCF 服务器应用程序配置的。 它定义了一个终结点,该终结点使用配置为使用 WCF 侦听器的自定义行为“bamEndpointBehavior”。

<system.serviceModel>  
  <services>  
    <service name="Service.CreditCardAuthorization">  
      <!-- The endpoint will use the "bamEndpointBehavior" -->   
      <endpoint address="http://localhost:8081/CreditCardService" contract="Service.ICreditCardAuthorization" name="CreditCardEndPoint" binding ="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding_ICreditCardAuthorization" behaviorConfiguration="bamEndpointBehavior"/>  
    </service>  
  </services>  
  <bindings>  
    <wsDualHttpBinding>  
      <binding name="wsDualHttpBinding_ICreditCardAuthorization" transactionFlow="true" />  
    </wsDualHttpBinding>  
  </bindings>  
  <behaviors>  
    <endpointBehaviors>  
      <!-- Define a new behavior named "bamEndpointBehavior" -->  
      <behavior name="bamEndpointBehavior">  
        <BamEndpointBehaviorExtension ConnectionString="Initial Catalog=BamPrimaryImport;Data Source=MyMachine;Integrated Security=SSPI;" InterceptorConfigurationPollingInterval="1500" />  
      </behavior>  
    </endpointBehaviors>  
  </behaviors>  
  <extensions>  
    <behaviorExtensions>  
      <!-- Define a new enpoint behavior extension using WCF interceptor -->  
      <add name="BamEndpointBehaviorExtension" type="Microsoft.BizTalk.Bam.Interceptors.Wcf.BamEndpointBehavior, Microsoft.BizTalk.Bam.Interceptors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />  
    </behaviorExtensions>  
  </extensions>  
</system.serviceModel>  

在您自己的 App.config 文件中使用该模板之前,需要对该模板稍做更改。

在 WCF 服务 App.config 文件中使用此模板
  1. 打开与您的应用程序关联的 App.config 文件。 可以使用 Notepad.exe 或其他文本编辑器执行此任务。

  2. 使用以下 XML 将 WCF BamEndpointBehavior 行为扩展添加到 extensions 元素:

    <behaviorExtensions>  
      <add name="BamEndpointBehaviorExtension" type="Microsoft.BizTalk.Bam.Interceptors.Wcf.BamEndpointBehavior, Microsoft.BizTalk.Bam.Interceptors, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />  
    </behaviorExtensions>  
    

    注意

    将行为扩展命名为“BamEndpointBehaviorExtension”并可根据需要更改为适合您的环境。

  3. 使用以下 XML 将使用新行为扩展的新终结点行为添加到 behaviors 元素。 行为扩展提供了一个连接字符串和轮询间隔(以秒为单位)。

    <endpointBehaviors>  
      <behavior name="bamEndpointBehavior">  
        <BamEndpointBehaviorExtension ConnectionString="Initial Catalog=BamPrimaryImport;Data Source=MyMachine;Integrated Security=SSPI;" InterceptorConfigurationPollingInterval="1500" />  
      </behavior>  
    </endpointBehaviors>  
    

    将数据源替换为在您的环境中承载 BamPrimaryImport 数据库的计算机的名称。 更改轮询间隔以满足要求;数字越大,则表示 WCF 侦听器将花费更长的时间检测配置更改。 如果已更改了行为扩展的名称,请使用该名称替换“BamEndpointBehaviorExtension”。

    注意

    行为名称为“bamEndpointBehavior”,您可对其进行更改以适合您的环境。

    注意

    指定 ConnectionString时,请避免使用明文用户名/密码组合。 这样做可能会危及您的数据库服务器安全。

    注意

    必须指定 PollingIntervalSec 大于或等于 5 (秒) 。 如果指定较低的值或省略 PollingIntervalSec 元素,则会引发错误,并且不会配置拦截。

  4. behaviorConfiguration 属性添加到要跟踪的终结点,并提供新行为的名称:

    <endpoint address="http://localhost:8081/CreditCardService" contract="Service.ICreditCardAuthorization" name="CreditCardEndPoint" binding ="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding_ICreditCardAuthorization" behaviorConfiguration="bamEndpointBehavior"/>  
    

    注意

    如果您使用的是其他行为名称,则请提供该名称。

    可以将行为配置应用于多个终结点。

  5. 保存已修改的 App.config 文件并重新启动应用程序。