The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

Fiddler 不只用來給 Browser 除錯,也可用於 .NET 應用程式

應該很多人都用過 Fiddler 監控所有從 Browser 發出的 Http 呼叫,對於 AJAX 應用程式來說真是個極佳的除錯工具,但你可能不知道 Fiddler 也可以用來除錯從 .NET 發出的 Http Request,例如說 .NET 有提供 WebClient 類別HttpWebRequest 類別,都是用來發送 Http 呼叫的,我們在開發應用程式的時候可以透過 Fiddler 幫我們除錯!

你在用 Visual Studio 開發 ASP.NET 網站的時候是可以不用特別設定,直接開啟 Fiddler 即可擷取到所有由 .NET 發出的所有封包,這樣你就不用辛苦的一直「猜」.NET 到底發出了什麼封包出去了。 除了這個之外,還可以用來除錯由 .NET 發出的 Web Service 呼叫的內容,讓你更瞭解 SOAP 或其他 Web Service 呼叫的實際內容。

至於為什麼 Fiddler 抓的到 .NET 發出的封包呢?主因就是因為 .NET 使用系統預設的 Proxy 設定(就是你 IE 中的工具 -> 網際網路選項 -> 連線 -> 區域網路設定 -> Proxy 伺服器設定 ),所以才可以讓 Fiddler 抓到這些封包。

但在 IIS 7 中有些許改變了,IIS 7 讓 ASP.NET 預設不使用系統預設 Proxy 設定,所以你會抓不到封包,這時你可以加入 <system.net> 設定到 web.config 中(跟 <system.web> 同一層),如下:

<system.net>
  <defaultProxy>
    <proxy  proxyaddress="http://127.0.0.1:8888" />
  </defaultProxy>
</system.net>

P.S. 因為 Fiddler 預設的 Proxy 埠號(Port)就是 8888