Httpclient.SendAsync 在将 StreamContent 发送到服务器之前将其加载到内存中

Httpclient.SendAsync loads StreamContent into memory before sending it to the server

我正在尝试将大型视频上传到服务器,但无论我做什么,如果我使用 Httpclient.SendAsync(HttpResponseMessage) 发送我已分配给 HttpResponseMessage 的内容所有 headers 等等,整个内容将被加载到内存中。

但我使用的是 HttpClient.PostAsync(uri, HttpResponseMessage.Content),它会正常上传,不会将内容加载到流中。

是否有任何解决方法,而不是仅仅切换到 PostAsync?它没有为我提供 SendAsync 提供的可能性,所以我宁愿不这样做。

示例:

{
    var multiForm = new MultipartFormDataContent(UploadId);
    var fileStream = File.OpenRead(videoPath);
    var streamContent = new StreamContent(fileStream);
    multiForm.Add(streamContent, "video", Path.GetFileName(fs.Name));

    var request = GetHttpReqeustMessage[Method.Post, uri];
    request.Content = multiForm;

    var result = client.SendAsync(request);
}

我太笨了。我忘记了我正在跟踪每个 httprequest 消息的日志,所以我会打印请求中的所有内容,包括整个视频的字节数。我要飞,远方。