繁体   English   中英

不使用 Fiddler 代理时 C# HttpClient 504 网关超时

[英]C# HttpClient 504 Gateway Timeout when not using Fiddler proxy

我有这个简单的代码来实例化一个 HttpClient 对象,并发送一些 webrequests,但遇到了一些我将很快解释的问题:

var client = WebHelper.CreateGzipHttpClient(new WebProxy("127.0.0.1", 8888));
client.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36");
client.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3");
client.DefaultRequestHeaders.Add("Accept-Language", "en-US,en;q=0.9");
client.DefaultRequestHeaders.Add("Accept-Encoding", "gzip, deflate, br");
client.DefaultRequestHeaders.Add("Sec-Fetch-Mode", "navigate");
client.DefaultRequestHeaders.Add("Sec-Fetch-Site", "none");
client.DefaultRequestHeaders.Add("Sec-Fetch-User", "?1");
client.DefaultRequestHeaders.Add("Upgrade-Insecure-Requests", "1");

await client.GetAsync("https://www.example.com");
await client.GetAsync("https://www.bestbuy.com");
await client.GetAsync("https://www.costco.com");

如果我删除对 example.com 的请求,后续请求将失败(bestbuy.com 上的 504 Gateway Timeout)。 对我来说没有任何意义,所以想知道 SO 上的某个人是否可以启发我解释为什么会这样。

此外,如果我从 HttpClient 中删除 WebProxy,则只有对 example.com 的请求会成功,而其他 2 个会失败。

这是怎么回事,我该如何解决?

public static HttpClient CreateGzipHttpClient(WebProxy proxy = null)
{
    HttpClientHandler handler = new HttpClientHandler()
    {
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
        Proxy = proxy
    };

    return new HttpClient(handler);
}

通过删除 Internet Explorer 的 Internet 选项中与 Fiddler 相关的 SSL 证书进行修复。 即使在卸载后这些也不会被删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM