2010-05-27 75 views
18

我們正在使用VS2005構建的舊版(5年以上)Windows服務應用程序進行HTTP GET調用。有幾件事情會讓事情變得困難(比如Web服務器位於客戶的網絡上,我們無法直接連接到它),不幸的是,我們不想讓運行的系統取代WinForm版本可以由Fiddler監控。新代碼似乎正在做所有事情,但是,唉,它沒有通過身份驗證。有沒有辦法配置Fiddler攔截來自Windows服務的HTTP調用?

有沒有辦法配置Fiddler(2.2.9.1)攔截來自Windows服務的HTTP調用?

回答

34

Codeka提供了讓我走向正確方向的線索。仍然缺少的部分是如何配置代理。所需的<appname>.exe.config有像下面添加一個部分:

<system.net> 
     <defaultProxy enabled="true"> 
       <proxy proxyaddress="http://127.0.0.1:8888" bypassonlocal="False"/> 
     </defaultProxy> 
</system.net> 

一旦這樣做是Windows服務的HTTP流量開始流過提琴手。

+1

http://www.fiddler2.com/fiddler/help/hookup.asp#Q -DOTNET – EricLaw 2010-05-29 14:33:16

+0

@Eric - 感謝您發佈該鏈接。我實際上在遵循Codeka的線索的情況下看到了這個FAQ項目。它只是不明顯,它適用於Windows服務。 – 2010-05-29 16:08:21

+0

FWIW,它與「Windows服務」無關,並且與您的服務是用.NET編寫的事實無關。 :-) – EricLaw 2010-06-01 01:17:02

5

Fiddler只是用作HTTP代理,所以如果您可以在您的服務中配置代理,那麼您可以將其配置爲通過Fiddler。是否可能很難說...

如果這不起作用,您可以通過在第二臺計算機上運行Fiddler並將其配置爲在端口80上偵聽來實現。然後在「測試」計算機上編輯您的主機文件,以便它指向第二臺計算機。因此,假設網絡服務位於www.example.com上,您可以設置您的測試服務器,以便「www.example.com」指向第二臺計算機(運行Fiddler)。然後,當服務連接到「www.example.com」時,實際上將連接到Fiddler。在錄製請求/響應之後,Fiddler會將連接轉發到 www.example.com。

我沒有測試過上述內容,但我認爲它會起作用。很明顯,如果你可以在你的服務中配置代理設置,那會更容易!

3

而且,當然,如果Fiddler不工作,總是有Wireshark。作爲一個暗示,在Wireshark中使用一對過濾器(例如,只顯示去往或來自目標IP的數據包),以避免感覺你正在被數據超載。

2

由於.NET繞過了localhost和127.0.0.1的代理,只需對您的機器名稱進行硬編碼,而不是使用您正在測試的URL。

//myUrl = "http://127.0.0.1/myservice"; 
myUrl = "http://mymachine/myservice"; 
相關問題