1

開発中のポータブル API クライアントをデバッグするために Fiddler を実行したいと考えています。

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ストアの単体テスト(プロジェクト内の任意のテスト)をデバッグし、ブレークポイントを(テストランナーの実行を停止するために)貼り付ける必要があります。これにより、Fiddlersのループバック拡張ツール内の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から「Win8Config」オプションを起動するだけで、単体テストプロジェクトがAppContainersのリストに表示されます。

そのアプリコンテナのループバックを有効にし、変更を保存してから単体テストを続行します。トラフィックが正しくキャプチャされていることを確認する必要があります。

一度これを行った後、もう一度行う必要はないように思われます-私はフィドラーを閉じて再起動しましたが、トラフィックはまだ正しくキャプチャされています。

ただし、これを行うと、ループバック免除ツールは、起動された場合にAppContainerがないSIDに対して定義されている免除についてうめき声を上げます。ただし、単体テストを再度実行する場合を除きます。

于 2012-11-13T12:12:29.923 に答える