使用Fiddler与Windows存储unit testing

我想运行Fiddler来帮助调试我正在开发的可移植API客户端。

在Visual Studio中,在Windowsapp storeunit testing项目属性页>调试选项卡上,我已选中“允许本地网络环回”选项。

在存储unit testing期间运行的每个Web请求都会因System.Net.Sockets.SocketException失败: A connection attempt failed because the connected party did not properly respond after a period of time or established connection failed because connected host has failed to respond 127.0.0.1:8888

我连接的Uri不是本地的 – 而是本地网络上的另一台机器 – 所以这个小提琴环回地址确实来自全局代理设置。

我知道对于Windowsapp store应用,您必须启用环回网络隔离豁免 ,并勾选UI中列出的每个应用容器(尽管它们都与VS或此unit testing项目无关) – 无济于事。

我也试过在Fiddler中禁用IPv6 – 不知道为什么我认为这可能有用,但它值得一试 – 它也不起作用。

有人有任何想法!?

好的 – 当我走在正确的轨道上时,我认为必须为unit testing项目注册一些app容器 – 我没想到的是它可能只在MSTest运行时才有效。

您需要调试Windows Storeunit testing(项目中的任何测试)并在中断一个断点(停止执行测试运行器),然后它将出现在Fiddlers的Loopback Extensions工具中的AppContainer列表中。

所以 – 考虑到这个测试:

 [TestMethod] public async Task Example() { var result = await GetSomeData(); //<-- breakpoint Assert.IsNotNull(result); } private async string GetSomeData() { //TODO something that makes a web request with, say, HttpClient } 

您所做的就是断点上面显示的行 - 然后从Fiddler启动'Win8 Config'选项 - 您将看到您的unit testing项目出现在AppContainers列表中。

为该应用容器启用环回,保存更改,然后继续进行unit testing - 您应该看到正确捕获的流量。

一旦这样做,你似乎不必再做一次 - 我已经关闭了提琴手并重新启动它,并且仍然可以正确捕获流量。

但是,有一个警告,一旦你这样做,Loopback免除工具将抱怨为SID定义的豁免,如果它被启动没有AppContainer - 除非你碰巧再次运行unit testing。