2016-05-17 15 views
4

dotnetコアアプリケーションでWebAPIを使用してリクエスト用のWebプロキシを指定しようとしています。このコードブロックは、実際のclr(dnx46)をターゲットにしたときに使用されていましたが、現在サポートされているフレームワークがnetcoreapp1.0とnetstandard1.5というrc2のものを使用しようとしています。asp.net core rc2でプロキシを指定

var clientHandler = new HttpClientHandler{ 
    Proxy = string.IsNullOrWhiteSpace(this._clientSettings.ProxyUrl) ? null : new WebProxy (this._clientSettings.ProxyUrl, this._clientSettings.BypassProxyOnLocal), 
    UseProxy = !string.IsNullOrWhiteSpace(this._clientSettings.ProxyUrl) 
}; 

WebProxyクラスがどこに行ったのだろうか。私はgithubリポジトリでさえどこでも見つけることができません。 WebProxyから変更された場合、何が変更されましたか? 私は、特定の要求に対して特定のURLにプロキシを設定できる必要があるので、「グローバルなInternet Explorer」の方法を使用することは自分のニーズには合致しません。これは主にWeb要求/応答のデバッグ用です。

答えて

5

今日も同じ問題があります。私たち自身がIWebProxyの実装を提供しなければならないことが判明しました。

public class MyProxy : IWebProxy 
{ 
    public MyProxy(string proxyUri) 
     : this(new Uri(proxyUri)) 
    { 
    } 

    public MyProxy(Uri proxyUri) 
    { 
     this.ProxyUri = proxyUri; 
    } 

    public Uri ProxyUri { get; set; } 

    public ICredentials Credentials { get; set; } 

    public Uri GetProxy(Uri destination) 
    { 
     return this.ProxyUri; 
    } 

    public bool IsBypassed(Uri host) 
    { 
     return false; /* Proxy all requests */ 
    } 
} 

そして、あなたはこのようにそれを使用します:幸いにもそれは全く複雑ではないのです

var config = new HttpClientHandler 
{ 
    UseProxy = true, 
    Proxy = new MyProxy("http://127.0.0.1:8118") 
}; 

using (var http = new HttpClient(config)) 
{ 
    var ip = http.GetStringAsync("https://api.ipify.org/").Result; 

    Console.WriteLine("Your IP: {0}"); 
} 

とプロキシがあなたのIWebProxy実装内で要求された場合、あなたも決定ロジックを置くことができ、あなたの特定の状況で。

+0

私は同様の問題に直面しましたが、1つの違いがあります。私はデフォルトのシステムプロキシを使用する必要があります。しかし、.netフレームワークでnullにプロキシを設定すると動作します。私が間違っている場合は修正してください。 – neleus

関連する問題