2010-03-11 25 views
6

我有一個WCF服務應用程序,在這個應用程序中,我正在通過安全連接調用第三方web服務。WCF - 查看xml請求/響應到一個安全的web服務

我一直在嘗試使用fiddler來查看請求響應流,但在嘗試應用所有可以在互聯網上找到的所有應用程序超過半天后,我放棄了它。儘管我向受信任的區域提供了更多的小提琴證書,但它有證書問題。

我最好的辦法是簡單地看到我對這個第三方Web服務所做的xml請求和響應。

我正在使用生成的代理類,所以我目前不能訪問我正在發送和接收的原始xml。我很好奇,如果我過於複雜的事情可以做得更簡單。這是我的開發機器,我幾乎可以訪問任何東西,沒有任何限制。

一個簡單的方法可以做到這一點嗎?

編輯:

在這一刻,我甚至不需要使用追蹤。我只需要查看我的請求/響應的序列化輸出。即使我可以通過Visual Studio調試器來完成,或者它會有所幫助。

回答

4

因爲我試圖讀取和引用到我的WCF應用程序的asmx web服務的soap消息,我的問題的解決方案是創建一個繼承自System.Web.Services.Protocols.SoapExtension的類,請在web.config中註冊此類,以便所有流量均通過此課程路由並查看。

沒有任何通訊會顯示在WCF軌跡上,所以這還不夠。然而,我瞭解它是有用的,所以現在我能夠看到我的wcf服務應用程序和web應用程序之間正在發生的所有事情。

本文釘對我來說how-to-capture-soap-envelopes-when-consuming-a-web-service

+0

這非常方便,感謝提示Kaivalya。 – 2010-05-07 18:15:50

+4

鏈接對我不起作用,但是這樣做了:http://blog.encoresystems.net/articles/how-to-capture-soap-envelopes-when-consuming-a-web-service.aspx – galets 2012-04-24 02:20:08

2

添加到您的app.config:

<system.diagnostics> 
<sources> 
    <source name="System.ServiceModel.MessageLogging"> 
    <listeners> 
     <add name="messages" type="System.Diagnostics.XmlWriterTraceListener" initializeData="messages.svclog" /> 
    </listeners> 
    </source> 
</sources> 

<system.serviceModel> 
<diagnostics> 
    <messageLogging 
     logEntireMessage="true" 
     logMalformedMessages="true" 
     logMessagesAtServiceLevel="true" 
     logMessagesAtTransportLevel="false" 
     maxMessagesToLog="-1"/> 
</diagnostics> 

它會記錄所有消息messages.svclog。然後您可以查看它們。

7

使用WCF Tracing - 它工作得很好,並帶有方便的trace viewer utility

您可以設置的選項負荷 - 但其核心,你必須像這樣添加到您的WCF服務和客戶端CONFIGS:

<configuration> 
    <system.diagnostics> 
     <sources> 
      <source name="System.ServiceModel" 
        switchValue="Information, ActivityTracing" 
        propagateActivity="true"> 
      <listeners> 
       <add name="traceListener" 
        type="System.Diagnostics.XmlWriterTraceListener" 
        initializeData= "c:\log\Traces.svclog" /> 
      </listeners> 
     </source> 
     </sources> 
    </system.diagnostics> 
</configuration> 

有各種各樣的「跟蹤偵聽」出來 - 在Visual Studio中寫入輸出控制檯,這裏是創建XML文件,或者可以將東西存儲在SQL Server數據庫表中 - 並且整個機制是可擴展的,您也可以編寫自己的跟蹤偵聽器!

也看到這裏:Using of WCF Trace和在這裏WCF Tracing FAQ欲瞭解更多信息。

+0

我把它這樣,但痕跡包含任何關於我的應用程序和第三方web服務之間的通信......這可能是由於SSL? – kaivalya 2010-03-11 17:44:30

+0

是「您的應用程序和第三方Web服務」之間的通信WCF調用?那麼你肯定應該看到你的WCF日誌中的條目。 – 2010-03-12 06:22:31

+0

第三方是一個作爲Web引用添加到我的wcf應用程序的Web服務。而我的應用正在發送請求並接收來自該服務的響應。來自此通信的任何req/resp參數信息絕對不存在於跟蹤中。即使使用記事本,我也在追蹤上完成了查找/搜索操作,並且沒有記錄任何我的req/resp對象或日誌中的值。目前正在實施攔截器攔截郵件行爲,希望這會給我我需要的東西。 – kaivalya 2010-03-12 10:27:43