2014-03-06 257 views
0

我需要在某些測試中模擬Web請求的Web響應。我打算使用fiddler核心。所以提琴手就像一個代理,我能夠爲每個我喜歡的請求設置響應。但我需要運行諸如控制檯應用程序或獨立應用程序之類的東西,以使提琴手核心能夠攔截請求。我需要它在我的asp.net mvc測試應用程序中以某種方式初始化,以便測試人員可以通過使用url來訪問這些假數據,而無需運行fiddler或任何其他應用程序。fiddlercore模擬測試響應

現在我試圖在控制器操作方法中運行我的提琴手應用程序,但它並沒有攔截任何東西。 我也嘗試添加URLMonInterop.SetProxyInProcess("127.0.0.1:"+ myPort, ""),但它也不起作用。

有沒有辦法自己主持fiddler核心應用程序,並使其攔截請求?

更新: 最後,我設法在asp.net mvc應用程序內託管fiddler核心。我在一個靜態類的靜態方法中進行了初始化,它實現了這個訣竅。另外,由於某種原因,在調用關機並再次執行初始化之後,我無法代理任何東西。我甚至調用GC.Collect,沒有任何幫助,但刷新主機進程,在我的情況下,IIS快遞。

回答

1

如文檔所述,SetProxyInProcess僅影響URLMon客戶端,.NET不使用URLMon進行網絡連接。

.NET客戶端通常會自動獲取當前代理設置,但是如果您在其他用戶帳戶中運行FiddlerCore,那麼這樣做不會奏效(並且您可能不希望您的mocker弄亂任何流量除了你的測試應用程序)。因此,您應該明確配置您的應用程序以通過您的FiddlerCore實例代理其流量;請參閱http://fiddlerbook.com/fiddler/help/hookup.asp#Q-DOTNEThttp://fiddlerbook.com/fiddler/help/hookup.asp#Q-IIS以及您的服務是否爲本地服務http://fiddlerbook.com/fiddler/help/hookup.asp#Q-LocalTraffic

+0

檢查鏈接。感謝您的快速回復,看起來像我一直在尋找的東西。 –

+0

埃裏克,是否有可能從本身掛鉤asp.net mvc應用程序?我的意思是通過在控制器操作方法中添加'FiddlerApplication.BeforeRequest'處理程序和'FiddlerApplication.Startup'。然後在這個應用程序的其他操作方法中捕獲請求? –

+0

它*可能*您的ASP.NET應用程序可以直接託管FiddlerCore,但我猜測它可能不會工作,因爲ASP.NET生命週期的工作方式;你可能最終會在每次迴應後撕毀FiddlerCore。但這對於ASP.NET專家來說確實是一個問題。 – EricLaw