web-dev-qa-db-ja.com

.NET Core上のシステムプロキシ(Fiddlerなど)を無視するRestSharp

Fiddlerでhttpトラフィックを確認したいのですが、キャプチャされたhttpトラフィックがありません。テストコードは次のとおりです。

private static void ByRestSharp()
{
    var restClient = new RestClient("https://jsonplaceholder.typicode.com");
    var request = new RestRequest("posts", Method.GET);
    var response = restClient.Get<List<Post>>(request);
    Console.WriteLine("{0} posts return by RestSharp.", response.Data.Count);
}

しかし、HttpClientを使用するように変更した後、Fiddlerはhttpトラフィック、サンプルコードをキャプチャできます。

private static void ByHttpClient()
{
    var httpClient = new HttpClient();
    using (var req = new HttpRequestMessage(HttpMethod.Get, "https://jsonplaceholder.typicode.com/posts"))
    using (var resp = httpClient.SendAsync(req).Result)
    {
        var json = resp.Content.ReadAsStringAsync().Result;
        var users = SimpleJson.SimpleJson.DeserializeObject<List<Post>>(json);
        Console.WriteLine("{0} posts return by HttpClient.", users.Count);
    }
}

これはRestSharpまたはFiddlerの問題ですか?

6
Liu Peng

RestSharpは、.NET Standardに移行するまで、システムプロキシをサポートしていました。次に、.NET Coreのプロキシで問題が発生し、システムプロキシの使用が完全に削除されました。 Githubで開かれた問題 があり、そこで進行状況を確認できます。

ただし、プロキシを明示的に設定すると、完全な.NET Frameworkで機能するはずです。チェックしてください この問題

動作していることが確認されている問題のコード:

var client = new RestClient("http://www.google.com");
client.Proxy = new WebProxy("127.0.0.1", 8888);
var req = new RestRequest("/", Method.GET);
var resp = client.Execute(req);

更新2018-05-31:RestSharp 106.3は、.NETCoreでもデフォルトのプロキシを自動的に使用しています。 Fiddlerでテスト済み。

17
Alexey Zimarev