首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 除錯利器:追蹤日誌與訊息日誌完整配置與分析實戰

     編輯:關於.NET

WCF 作為分散式框架,錯誤排查難度遠高於單體應用。追蹤日誌與訊息日誌是官方提供的核心診斷工具,配合 SvcConfigEditor 與 SvcTraceViewer 可大幅縮短問題定位時間。本文以 IIS 6.0 寄宿為例完整演示配置與分析流程。

兩大診斷工具

  • SvcConfigEditor.exe:圖形化 WCF 組態編輯器,路徑 C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin
  • SvcTraceViewer.exe:追蹤/訊息日誌檢視器,支援活動圖、XML 內容檢視、錯誤定位

啟用追蹤與訊息日誌配置步驟

1. 開啟 SvcConfigEditor 載入 Web.config

SvcConfigEditor 主介面

Diagnostics 節點預設關閉

2. 啟用訊息日誌

  • 勾選 Enable MessageLogging
  • Log Level 選 Transport (完整 SOAP 封包) 或 Service/Malformed
  • 配置 ServiceModelMessageLoggingListener:設定輸出路徑 (如 C:\ServiceLogs\Web_messages.svclog)、MaxSizeOfMessageToLog、MaxMessagesToLog
  • 進階:LogEntireMessage="true" 記錄完整 SOAP Body (預設僅 Header)

MessageLogging 配置

LogEntireMessage 設定

3. 啟用追蹤日誌

  • 勾選 Enable Tracing
  • Trace Level:Warning (生產建議) 或 Information/Verbose (詳細除錯,注意磁碟增長)
  • 配置 ServiceModelTraceListener:輸出路徑 (如 C:\ServiceLogs\Web_tracelog.svclog)

Tracing 配置

4. 儲存並重啟 IIS

File → Save,執行 iisreset 生效。

SvcTraceViewer 實戰分析

訊息日誌分析

開啟 Web_messages.svclog:

SvcTraceViewer 主視窗

活動清單

  • 左側活動清單顯示每次呼叫:服務方法、耗時、狀態
  • 選中活動,Description 面板顯示 請求 SOAP 與 回應 SOAP 兩筆記錄

請求 SOAP Body

回應 SOAP Body

可清晰查看參數值、回傳資料、序列化格式。若回應經壓縮/加密,需配合業務邏輯解碼。

追蹤日誌分析

開啟 Web_tracelog.svclog:

追蹤日誌活動圖

  • 活動圖展示完整處理管線:通道建立、訊息解碼、授權、調度、實例化、方法執行、編碼、發送
  • 紅色圖示標示錯誤活動,點擊可見異常訊息與完整堆疊追蹤

錯誤定位與 StackTrace

生產環境最佳實踐

場景Trace LevelMessage Logging備註
生產常態Warning / Error關閉或 Malformed效能影響最小
問題排查Information / VerboseTransport (限時開啟)磁碟增長快,解決後立即關閉
安全審計WarningService (含 Header)不記錄 Body 敏感資料

常見問題快速定位指南

  • 400 Bad Request:訊息日誌看請求 SOAP 是否符合合約
  • 序列化失敗:追蹤日誌看 XmlSerializer / DataContractSerializer 錯誤
  • 授權拒絕:追蹤日誌 ServiceAuthorizationManager 活動
  • 逾時:活動耗時分析,找出慢速環節 (DB、外部呼叫、大量資料序列化)
  • 通道錯誤:ChannelFactory / IClientChannel 相關活動

總結

WCF 追蹤/訊息日誌是分散式系統的「黑盒子」。善用 SvcConfigEditor 快速配置、SvcTraceViewer 視覺化分析,配合分級啟用策略,能解決 90% 以上的 WCF 疑難雜症。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved