为什么 .Net HttpClient post 请求很慢(当 fiddler 不是 运行 时)?

Why .Net HttpClient post request is slow (when fiddler is not running)?

我在使用 "HttpClient" .Net 组件时遇到了这种奇怪的行为。

我正在 post 请求中上传一个文件 (1.1MB)。当提琴手关闭时大约需要 15 秒当提琴手打开时大约需要 4 秒。

我没有使用任何代理,正在使用 TLS1 上传到 HTTPS 服务器。 我只发送一个请求,不确定 keep-alive 会改变什么...... 我也尝试做这里提到的一些事情 "telerik": http://www.telerik.com/blogs/help!-running-fiddler-fixes-my-app-

但是没有用,

是否还有其他我错过的设置?缓冲区大小?不知道怎么设置..

这是我上传文件的方式:

           HttpClient _httpClient;

            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            ...
            ...
            ...

            MultipartFormDataContent multipartData = new MultipartFormDataContent();
            multipartData.Add(new StreamContent(File.OpenRead(scanPath)), "fileToUpload","\"" + Path.GetFileName(scanPath) + "\"");

            HttpResponseMessage response = await _httpClient.PostAsync("FileUpload", multipartData);

            MyObject result = await GetResultFromResponse<MyObject>(response);

通过使用 "ByteArrayContent" 而不是 "StreamContent" 解决。

在"add"方法中"MultiPartFromData"class

这种类型的 HttpContent 大约快 5-8 倍。

multipartData.Add(new ByteArrayContent(File.ReadAllBytes(scanPath)), "fileToUpload", "\"" + Path.GetFileName(scanPath) + "\"");