And*_*tan 1 .net c# fiddler visual-studio-2012 windows-store-apps
我想运行Fiddler来帮助调试我正在开发的可移植API客户端.
在Visual Studio中,在Windows应用商店单元测试项目属性页>调试选项卡上,我已选中"允许本地网络环回"选项.
商店单元测试过程中运行每个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不是本地的 - 而是本地网络上的另一台机器 - 所以这个小提琴环回地址确实来自全局代理设置.
我知道对于Windows应用商店应用,您必须启用环回网络隔离豁免,并勾选UI中列出的每个应用容器(尽管它们都与VS或此单元测试项目无关) - 无济于事.
我也试过在Fiddler中禁用IPv6 - 不知道为什么我认为这可能有用,但它值得一试 - 它也不起作用.
有人有任何想法!?
好的 - 当我走在正确的轨道上时,认为必须为单元测试项目注册一些app容器 - 我没想到的是它可能只在MSTest运行时才有效.
您需要调试Windows应用商店单元测试(项目中的任何测试)并在中断一个断点(暂停执行测试运行器),然后它将出现在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
}
Run Code Online (Sandbox Code Playgroud)
您所做的只是断点上面显示的行 - 然后从Fiddler启动'Win8 Config'选项 - 您将看到您的单元测试项目出现在AppContainers列表中.
为该应用容器启用环回,保存更改,然后继续进行单元测试 - 您应该看到正确捕获的流量.
一旦这样做,你似乎不必再做一次 - 我已经关闭了提琴手并重新启动它,并且仍然可以正确捕获流量.
但是,一旦你这样做,Loopback免除工具就会抱怨为一个没有AppContainer的SID定义的豁免 - 如果它被启动 - 除非你碰巧再次运行一个单元测试.