2011-01-07 35 views
100

我有一個接受複雜類型並返回一些數據的WCF服務。我想使用Fiddler來查看對服務的傳入請求是什麼樣的。客戶端是使用服務引用代理的.net控制檯應用程序。這可能與提琴手。我是這個工具的新手,並且只使用它過去用請求構建器發佈數據。如何使用提琴手監視WCF服務

+3

的WCF尋人服務都還不錯本身包括一個漂亮的圖形界面查看它們。 http://msdn.microsoft.com/en-us/library/ms751526.aspx – kenny 2011-01-08 00:40:56

回答

8

Fiddler監聽出站請求而不是入站請求,因此您無法使用Fiddler監視進入服務的所有請求。

您將與Fiddler一起獲得的最好功能是查看由控制檯應用程序生成的所有請求(假定應用程序生成Web請求而不是使用其他管道)。

如果你想要一個功能更強大(但更難使用)的工具來監視所有傳入的請求,你應該檢查WireShark。

編輯

我認錯。感謝Eric Law對configuring Fiddler to be a reverse proxy發出指示!

+0

感謝您的信息。我需要查看類似於asmx服務描述頁面的請求結構。 WCF似乎沒有這個選項。 – Quadwwchs 2011-01-07 20:40:25

+9

這不太準確(因爲WireShark不能改變流量,所以「權力」是主觀的)。有關如何監聽入站流量的詳細信息,請參閱http://www.fiddler2.com/fiddler/help/reverseproxy.asp。 – EricLaw 2011-01-07 21:14:54

+0

埃裏克 - 我建議你在獨立的答案中說明。 – Cheeso 2011-01-07 22:37:00

1

如果您可以控制正在發送通信的客戶端,這很簡單。你所需要做的就是在客戶端服務類中設置HttpProxy。

例如,我這樣做是爲了跟蹤在智能手機上運行的Web服務客戶端。我將該代理設置在該客戶端連接到網絡上PC上運行的Fiddler的IP /端口上。智能手機應用程序通過Fiddler將所有外發通信發送到Web服務。

這工作完美。

如果您的客戶端是WCF客戶端,請參閱this Q&A以瞭解如何設置代理。

即使您無法修改客戶端應用程序的代碼,您也可以通過管理方式設置代理,具體取決於客戶端使用的Web服務堆棧。

134

你需要在你的web.config

<system.net> 
    <defaultProxy> 
    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" /> 
    </defaultProxy> 
</system.net> 
  1. 然後開始提琴手Web服務器機器上添加此。
  2. 點擊工具|提琴手選項=>連接=>調整端口爲8888.(允許遠程,如果你需要的話)
  3. 好的,然後從文件菜單,捕獲流量。

就是這樣,但不要忘記在關閉提琴手後刪除web.config文件,因爲如果你不這樣做,它會報錯。

參考:http://fiddler2.com/documentation/Configure-Fiddler/Tasks/UseFiddlerAsReverseProxy

0

我已經使用了從瀏覽器到服務的銀色光芒的應用程序監控服務電話線鯊魚工具。嘗試link給出明確信息

它使您能夠監視整個請求和響應內容。

4

就這麼簡單,你只需要改變的配置客戶端地址:而不是「本地主機」的計算機名或IP

8

變化只是有這個問題,有什麼工作對我來說是使用本地主機。小提琴手:

<endpoint address="http://localhost.fiddler/test/test.svc" 
      binding="basicHttpBinding" 
      bindingConfiguration="customBinding" 
      contract="test" 
      name="customBinding"/> 
5

合併註釋/答案中提到的幾個使用案例的注意事項。

晴,看到http://docs.telerik.com/fiddler/Configure-Fiddler/Tasks/ConfigureDotNETApp

  • 開始提琴手您的應用程序
  • 在一個控制檯應用程序之前,你可能並不需要指定proxyaddress

    <proxy bypassonlocal="False" usesystemdefault="True" /> 
    
  • 在Web應用程序/東西託管在IIS中,您需要添加proxyaddress

    <proxy bypassonlocal="False" usesystemdefault="True" proxyaddress="http://127.0.0.1:8888" /> 
    
  • 當.NET發出請求(通過服務客戶端或HttpWebRequest等),它總是繞過含localhost網址提琴手代理,所以你必須使用一個別名,如機器名或彌補的東西在你的「主機的文件(這就是爲什麼像localhost.fiddlerhttp://HOSTNAME作品)
  • 如果指定proxyaddress,你必須從你的配置如果提琴手是不是刪除它,或任何請求您的應用程序,使得將拋出類似的異常:

    無法建立連接,因爲目標機器ac tively拒絕了127.0.0.1:8888

  • 不要忘了使用config transformations刪除代理部分生產