1

我想运行 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 - 不知道为什么我认为这可能会起作用,但值得一试 - 它也不起作用。

任何人有任何想法!

4

1 回答 1

5

好的-虽然我走在正确的轨道上,但认为必须为单元测试项目注册了一些应用程序容器-我没想到它可能仅在 MSTest 运行时才处于活动状态。

您需要调试 Windows Store 单元测试(项目中的任何测试)并在其中插入断点(以停止测试运​​行程序的执行),这样它就会出现在 Fiddlers 的 Loopback Extensions 工具中的 AppContainers 列表中。

所以 - 给定这个测试:

[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”选项 - 您将看到您的单元测试项目出现在 AppContainers 列表中。

为该应用程序容器启用环回,保存更改,然后继续进行单元测试 - 您应该会看到正确捕获的流量。

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

然而,一个警告词,一旦你这样做,Loopback 豁免工具将抱怨为 SID 定义的豁免,如果它启动时没有 AppContainer ——除非你碰巧再次运行单元测试。

于 2012-11-13T12:12:29.923 回答