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

應該很多人都用過 [Fiddler](http://www.fiddler2.com/fiddler2/ "Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet.") 監控所有從 Browser 發出的 Http 呼叫，對於 AJAX 應用程式來說真是個極佳的除錯工具，但你可能不知道 [Fiddler](http://www.fiddler2.com/fiddler2/ "Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet.") 也可以用來除錯從 .NET 發出的 Http Request，例如說 .NET 有提供 [WebClient 類別](http://msdn2.microsoft.com/zh-tw/library/system.net.webclient\(VS.80\).aspx "WebClient 類別(System.Net)") 或 [HttpWebRequest 類別](http://msdn2.microsoft.com/zh-tw/library/system.net.httpwebrequest\(VS.80\).aspx "HttpWebRequest 類別(System.Net)")，都是用來發送 Http 呼叫的，我們在開發應用程式的時候可以透過 [Fiddler](http://www.fiddler2.com/fiddler2/ "Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet.") 幫我們除錯！

你在用 Visual Studio 開發 ASP.NET 網站的時候是可以不用特別設定，直接開啟 [Fiddler](http://www.fiddler2.com/fiddler2/ "Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet.") 即可擷取到所有由 .NET 發出的所有封包，這樣你就不用辛苦的一直「猜」.NET 到底發出了什麼封包出去了。 除了這個之外，還可以用來除錯由 .NET 發出的 Web Service 呼叫的內容，讓你更瞭解 SOAP 或其他 Web Service 呼叫的實際內容。

至於為什麼 [Fiddler](http://www.fiddler2.com/fiddler2/ "Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet.") 抓的到 .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](http://127.0.0.1:8888/)" />  
>   </defaultProxy>  
> </system.net>

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