我需要在某些测试中模拟Web请求的Web响应。我打算用fiddler核心。所以fiddler就像代理一样,我可以为我喜欢的每个请求设置响应。但我需要运行一些类似控制台应用程序或独立应用程序的东西,以使fiddler核心能够拦截请求。我需要它在我的asp.net mvc测试应用程序中以某种方式初始化,以便测试人员可以通过仅使用URL来访问这些虚假数据,而无需运行fiddler或任何其他应用程序。
现在我试图在Controller动作方法中运行我的fiddler应用程序,但它不会拦截任何东西。
我也尝试添加URLMonInterop.SetProxyInProcess("127.0.0.1:"+ myPort, "")
,但它也不起作用。
有没有办法自我托管fiddler核心应用并拦截请求?
更新: 最后,我设法在asp.net mvc应用程序中托管了fiddler核心。我在静态类的静态方法中进行了初始化,并且它完成了诀窍。此外,由于某种原因,在调用shutdown然后再次执行初始化后,我无法代理任何内容。我甚至cal GC.Collect,没有任何帮助,但刷新主机进程,在我的情况下IIS快递。
答案 0 :(得分:1)
如文档所述,SetProxyInProcess
仅影响URLMon客户端,.NET不使用URLMon进行网络连接。
.NET客户端通常会自动获取当前的代理设置,但是如果您在另一个用户帐户中运行FiddlerCore,那就不会起作用(并且您可能不希望您的模型器弄乱任何流量,除了你的测试应用程序)。因此,您应该明确配置应用程序以通过FiddlerCore实例代理其流量;如果您的服务是本地http://fiddlerbook.com/fiddler/help/hookup.asp#Q-DOTNET
,请参阅http://fiddlerbook.com/fiddler/help/hookup.asp#Q-IIS和http://fiddlerbook.com/fiddler/help/hookup.asp#Q-LocalTraffic