为什么我的C#winforms应用程序中第一个HttpClient.PostAsync调用速度极慢?

Zac*_*ach 12 c# winforms dotnet-httpclient

我有一个像这样的httpclient:

var client = new HttpClient();
Run Code Online (Sandbox Code Playgroud)

我这样发帖:

var result = client.PostAsync(
                endpointUri,
                requestContent);
Run Code Online (Sandbox Code Playgroud)

得到这样的回应:

HttpResponseMessage response = result.Result;
Run Code Online (Sandbox Code Playgroud)

我理解这个调用会阻塞线程,这就是它应该如何工作(只是为自己构建一个工具,不需要异步线程)

我第一次运行此调用时,大约需要2分钟才能得到结果.同时,如果我在其他地方完成同样的呼叫,那么它在200ms完成.即使我点击谷歌,也需要2分钟.但是,在第一次通话后,只要我保持应用程序打开,任何额外的通话都是好的.它只是我打开应用程序时的第一个校准.可能是什么导致了这个?

Zac*_*ach 17

问题是它在很长一段时间内都在试图解析客户端的代理问题.像这样初始化HttpClient就可以了:

var client = new HttpClient(new HttpClientHandler
            {
                UseProxy = false
            });
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了同样的问题,即使使用 proxy = false,第一次也很慢,第一次之后很快。仅针对特定网址,其他网址则不然。任何人都有另一个建议。@蒂莫西冈萨雷斯 (4认同)
  • 我遇到了类似的问题,即使使用 HttpClient 的新实例,第二次尝试需要 40 毫秒并由提琴手测量的请求第一次也需要 1-2.5 秒(考虑到请求的长度非常大)。设置 UseProxy = false 没有帮助。 (2认同)