2013-08-19 140 views
1

我在調試WCF SOAP客戶端。我可以修改客戶端,但不能控制服務器。我想查看發送和接收的實際消息,以便了解爲什麼在客戶端發送時SoapUI中的消息失敗。檢查WCF SOAP消息有效負載

該通信是通過SSL進行的,因此我無法使用Wireshark檢查線路上的消息。

我已啓用wcf跟蹤(與logEntireMessage="true"),但在記錄大量數據時,實際的響應有效內容似乎未被記錄。它在跟蹤查看器中僅顯示爲「... stream ...」。此外,我似乎無法找到跟蹤中的傳出消息的HTTP標頭。

有人有一個想法如何更接近檢查實際的消息?

編輯:Fiddler幫我找到了問題。 (這是服務器不喜歡的有效載荷中的UTF-8字節順序標記。)另一方面,據我所知,WFC跟蹤太高,無法找到這種問題。

回答

3

一個選項是use Fiddler。另一種選擇是WCF日誌記錄(如你所說),確保你標記爲在傳輸和消息級別登錄。這裏是適合我的:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing"> 
       <listeners> 
        <add type="System.Diagnostics.DefaultTraceListener" name="Default"> 
         <filter type="" /> 
        </add> 
        <add name="ServiceModelMessageLoggingListener"> 
         <filter type="" /> 
        </add> 
       </listeners> 
      </source> 
     </sources> 
     <sharedListeners> 
      <add initializeData="C:\messages.svclog" 
       type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
       name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp"> 
       <filter type="" /> 
      </add> 
     </sharedListeners> 
    </system.diagnostics> 
    <system.serviceModel> 
     <diagnostics> 
      <messageLogging logEntireMessage="true" logMalformedMessages="true" 
       logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" /> 
     </diagnostics> 
    </system.serviceModel> 
</configuration> 
+0

提琴手是否允許您解碼來自客戶端應用程序的SSL流量? – JacquesB

+1

是http://fiddler2.com/documentation/Configure-Fiddler/Tasks/DecryptHTTPS –