共用方式為


WCF 服務及 Windows 的事件追蹤

ETWTracing 範例示範如何使用 Windows Communication Foundation (WCF) 中的分析追蹤,在 Windows 事件追蹤 (ETW) 中發出事件。 分析追蹤是在 WCF 堆疊關鍵點發出的活動,可在實際執行環境中進行 WCF 服務的疑難排解。

WCF 服務中的分析追蹤是可以在實際執行環境中開啟的追蹤功能,對效能產生的影響相當小。 這些追蹤都會做為事件發出至 ETW 工作階段。

這個範例包括基本的 WCF 服務,其中事件會從服務發至事件記錄檔,而使用事件檢視器即可加以檢視。 此外還可以啟動專用的 ETW 工作階段,以接聽來自 WCF 服務的事件。 這個範例包括指令碼,可建立專用的 ETW 工作階段,用來將事件儲存到可以使用事件檢視器讀取的二進位檔中。

若要使用這個範例

  1. 使用 Visual Studio 開啟 EtwAnalyticTraceSample.sln 解決方案檔案。

  2. 若要建置此方案,請按 Ctrl+Shift+B

  3. 若要執行此方案,請按下 Ctrl+F5

    在網頁瀏覽器中按一下 [Calculator.svc]。 服務的 WSDL 文件 URI 應該會出現在瀏覽器中。 請複製該 URI。

    根據預設,服務會開始接聽連接埠 1378 http://localhost:1378/Calculator.svc 上的要求。

  4. 執行 WCF 測試用戶端 (WcfTestClient.exe)。

    WCF 測試用戶端 (WcfTestClient.exe) 位於 \<Visual Studio Install Dir>\Common7\IDE\WcfTestClient.exe

  5. 在 WCF 測試用戶端內依序選取 [檔案] 和 [新增服務],藉此新增服務。

    在輸入方塊中加入端點位址。 預設值為 http://localhost:1378/Calculator.svc

  6. 開啟 [事件檢視器] 應用程式。

    在叫用服務之前,啟動事件檢視器,並確認事件記錄檔正在接聽從 WCF 服務發出的追蹤事件。

  7. 從 [開始] 功能表中,依序選取 [系統管理工具] 和 [事件檢視器]。 啟用 [分析] 和 [偵錯] 記錄檔。

  8. 在事件檢視器的樹狀檢視中,依序巡覽至 [事件檢視器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows] 和 [Application Server-Applications]。 以滑鼠右鍵按一下 [Application Server-Applications],然後依序選取 [檢視]、[顯示分析與偵錯記錄檔]

    請確認已選取 [顯示分析與偵錯記錄] 選項。

  9. 啟用 [分析] 記錄檔。

    在事件檢視器的樹狀檢視中,依序巡覽至 [事件檢視器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows] 和 [Application Server-Applications]。 以滑鼠右鍵按一下 [分析],然後選取 [啟用記錄]

若要測試服務

  1. 切換回 WCF 測試用戶端,然後按兩下 Divide 並保留預設值,這樣會將分母指定為 0。

    如果分母為 0,則服務會擲回錯誤。

  2. 請查看服務所發出的事件。

    切換回事件檢視器,並依序巡覽至 [事件檢視器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows] 和 [Application Server-Applications]。 以滑鼠右鍵按一下 [分析],並選取 [重新整理]

    WCF 分析追蹤事件會在事件檢視器中顯示。 請注意,由於服務擲回錯誤,因此事件檢視器中會顯示錯誤追蹤事件。

  3. 重複步驟 1 和 2,但使用有效的輸入。 N2 參數的值可以是 0 以外的任何數字。

    重新整理分析通道,就會看見 WCF 事件未包含任何錯誤事件。

此範例示範 WCF 服務所發出的分析追蹤事件。

若要清除 (選擇性)

  1. 開啟事件檢視器。

  2. 依序巡覽至 [事件檢視器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows] 和 [Application Server-Applications]。 以滑鼠右鍵按一下 [分析],並選取 [停用記錄]

  3. 依序巡覽至 [事件檢視器]、[應用程式及服務記錄檔]、[Microsoft]、[Windows] 和 [Application Server-Applications]。 以滑鼠右鍵按一下 [分析],並選取 [清除記錄檔]

  4. 選擇 [清除] 選項,即可清除事件。

另請參閱