2013-05-13 4 views
42

ローカルプロキシ(Fiddler)経由でリクエストをルーティングしようとしたときに.NETのHttpClient経由で呼び出すサービスのバグを解決していますが、プロキシ設定が有効にならないようです。ここで.NET 4.5のHttpClientでプロキシを使用する

が、私はクライアントの作成方法は次のとおりです。

var response = CreateHttpClient(ctx, sid).PostAsJsonAsync("api/prefs/", smp).Result; 

要求がプロキシをヒットしようとせずにサーバーにまっすぐに行く:

private HttpClient CreateHttpClient(CommandContext ctx, string sid) { 
    var cookies = new CookieContainer(); 

    var handler = new HttpClientHandler { 
     CookieContainer = cookies, 
     UseCookies = true, 
     UseDefaultCredentials = false, 
     Proxy = new WebProxy("http://localhost:8888", false, new string[]{}), 
     UseProxy = true, 
    }; 

    // snip out some irrelevant setting of authentication cookies 

    var client = new HttpClient(handler) { 
     BaseAddress = _prefServerBaseUrl, 
    }; 

    client.DefaultRequestHeaders.Accept.Add(
     new MediaTypeWithQualityHeaderValue("application/json")); 

    return client; 
} 

、私はして要求を送信します。私は何を取りこぼしたか?

+0

サービスはローカルマシンでテスト中ですか?ローカルアドレスのプロキシバイパスを検討してください。 – Xaqron

+0

ところで、 'HttpClient'インスタンスを作成するのは高価です。可能であれば、インスタンスを再利用する必要があります。 Googleを使用してこの到達可能性について話すブログ記事がいくつかあります。 – NathanAldenSr

答えて

7

ああ、私が指していたBaseAddressはhttp://localhost:8081でした。 BypassOnLocalをfalseに設定しているにもかかわらず、明らかにlocalhostは依然としてプロキシをバイパスするのに十分であることが分かります。

IISでホストされているドメインを追加して、そのドメインを127.0.0.1に指定しました。新しく作成されたドメインが使用されました。

+6

また、http:// localhost:8888を使用することもできます。 –

+2

私はバッドリクエストを取得しています - 無効なホスト名を入力したとき。 localhostの後 – Michael

+0

@DarrelMiller私はlocalhostを追加しても何も変更はありません。文字列配列を削除 ' <プロキシbypassonlocal = "false" をusesystemdefault = "真" のproxyAddress = "http://localhost.:8888"/> ' – felickz

1

すべてのプロセスからのトラフィックを取得するようにFiddlerを設定していますか?キャプチャが表示されているステータスバーを見てください。その横に「すべてのプロセス」が表示されます。 「Webブラウザ」が表示されている場合は、それをクリックしてすべてのプロセスに変更します。これは、使用しているFiddlerのバージョンによって異なる場合があります。

38

このコードは私のために働いていた:私は私のWebProxyコンストラクタに空の配列を供給していないのです

var httpClientHandler = new HttpClientHandler 
         { 
          Proxy = new WebProxy("http://localhost:8888", false), 
          UseProxy = true 
         } 

注意を。多分それは問題ですか?

+0

は私のために働きましたあまりにも。プロキシがlocalhostで動作するようにするには、HOSTSへのエントリが必要でした。 –

+0

あなたはちょうど私の日を保存しました^ _ ^ –

関連する問題