對於WCF的消息跟蹤主要有Microsoft Service Trace Viewer(服務跟蹤查看器)和tcpTrace這兩個。服務跟蹤查看器工具功能比較強大可以瞭解 WCF 偵聽器生成的診斷跟蹤信息,從而找到錯誤的根本原因。該工具提供了一種輕鬆查看、分組和篩選跟蹤的方法,以便可以診斷、修復和驗證 WCF 服務的問題。但是使用之前需要在服務端作相應的配置。tcpTrace其實就是一個通過端口映射來捕獲Tcp包的工具使用起來非常簡單,由於WCF的很多綁定都會走tcp協議因此使用該工具來捕獲數據包會非常方便。下面就簡要的介紹一下這兩個工具的使用。
Microsoft Service Trace Viewer
Service Trace Viewer是.Net Framework自還的工具一般在C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin路徑下可以找到。以《WCF服務編程-HelloWorld》中的源碼爲例,我們在使用之前需要對服務端的App.Config配置文件作相應的更改:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- WCF 配置聲明-->
<system.serviceModel>
<!--添加跟蹤節點-->
<diagnostics performanceCounters="All" wmiProviderEnabled="true">
<messageLogging logEntireMessage="true" logMalformedMessages="true" logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" maxMessagesToLog="100000"/>
</diagnostics>
<services>
<endpoint address="" binding="basicHttpBinding" contract="Cbcye.Contract.IHelloWorld" name=""></endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:7788/cbcye/helloworld%22/>
</baseAddresses>
</host>
</service>
</services>
<!--跟蹤節點配置-->
<system.diagnostics >
<sharedListeners>
<add name="sharedListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="c:\temp\trace.svclog" />
</sharedListeners>
<sources>
<source name="System.ServiceModel" switchValue="Verbose, ActivityTracing" >
<listeners>
<add name="sharedListener" />
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
<listeners>
<add name="sharedListener" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>
運行WCF服務端與客戶端,讓WCF服務端與客戶端產生通訊數據。
打開服務跟蹤查看器打開配置文件中initializeData屬性的路徑相對應的文件,我們就可以在查看器中查看到相應的數據。
tcpTrace
tcpTrace的使用比較簡單在啓動tcpTrace時會輸入要映射的端口即可。如《WCF服務編程-HelloWorld》中的示例,在使用之前我們需要先改變客戶端請求的地址的端口從7788改爲8080,這樣客戶端在請求服務時會把數據發到監聽8080端口的tcpTrace,tcpTrace之後會將數據轉發給7788端口的服務。
tcpTrace監聽到的WCF數據(注意:tcpTrace僅支持通過tcp傳輸的消息)