如何設定用於攔截的 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 部署觀察模型
按一下 [啟動 ],然後按一下 [ 執行 ] 以開啟 Windows 命令提示字元。
在 [開啟] 欄位中輸入cmd,然後按一下 [確定]。
使用變更目錄命令移至內含要部署之觀察模型的目錄。 例如, cd c:\businessprocess\Orders。
使用 bm.exe 部署觀察模型:
\Program Files (x86) \Microsoft BizTalk Server VERSION >Tracking\bm.exe < deploy-all -Definitionfile: <definitionfile.xml>
請務必以您要部署的觀察模型檔案名取代 <definitionfile.xml> 。 如需更多選項,請參閱 攔截器管理命令。
注意
在支援使用者帳戶控制 (UAC) 的系統上,您可能需要使用系統管理權限來執行工具。
輸入 Exit ,然後按 ENTER 以關閉命令提示字元。
部署攔截器組態檔
您必須部署攔截器組態檔,應用程式才能擷取 BAM 活動。
若要使用 bm.exe 部署攔截器組態檔
按一下 [啟動 ],然後按一下 [ 執行 ] 以開啟 Windows 命令提示字元。
在 [開啟] 欄位中輸入cmd,然後按一下 [確定]。
使用變更目錄命令移至內含要部署之攔截器組態檔的目錄。 例如, cd c:\businessprocess\Orders。
使用 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) 的系統上,您可能需要使用系統管理權限來執行工具。
輸入 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 檔中使用此範本
開啟與應用程式關聯的 App.config 檔案。 使用 Notepad.exe 或其他文字編輯器開啟即可。
使用下列 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",並且可以視您的環境需要進行變更。
使用下列 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
元素,將會引發錯誤,而且不會設定攔截。將
behaviorConfiguration
屬性新增至您要追蹤的端點,並提供新行為的名稱:<endpoint address="http://localhost:8081/CreditCardService" contract="Service.ICreditCardAuthorization" name="CreditCardEndPoint" binding ="wsDualHttpBinding" bindingConfiguration="wsDualHttpBinding_ICreditCardAuthorization" behaviorConfiguration="bamEndpointBehavior"/>
注意
如果您使用不同的行為名稱,請提供該名稱。
您可以套用行為組態至多個端點。
儲存修改過的 App.config 檔,並且重新啟動應用程式。