WCF服務編程-WCF應用程序的消息跟蹤

對於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屬性的路徑相對應的文件,我們就可以在查看器中查看到相應的數據。

image

 

tcpTrace

tcpTrace的使用比較簡單在啓動tcpTrace時會輸入要映射的端口即可。如《WCF服務編程-HelloWorld》中的示例,在使用之前我們需要先改變客戶端請求的地址的端口從7788改爲8080,這樣客戶端在請求服務時會把數據發到監聽8080端口的tcpTrace,tcpTrace之後會將數據轉發給7788端口的服務。

image

tcpTrace監聽到的WCF數據(注意:tcpTrace僅支持通過tcp傳輸的消息)

image

發佈了29 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章