out-of-memory - HttpClient Head请求内存异常PCL

标签 out-of-memory httpclient portable-class-library head

大家好,我正在尝试执行 head 请求以获取文件的内容长度(它很大 >= 200MB)并且很简单,只是向我抛出一个异常,说“抛出了‘System.OutOfMemoryException’类型的异常。 “因为它是一个 HEAD 方法,所以这应该不是问题吧?

这是我的代码:

   using (HttpClient client = new HttpClient())
                {
                    using (var request = new HttpRequestMessage()
                    {
                        RequestUri = new Uri(streamLink.StreamLink),
                        Method = HttpMethod.Head
                    })
                    {
                        using (var response = await client.SendAsync(request))
                        {
                            var restatus = response.StatusCode == HttpStatusCode.OK;
                            if (restatus)
                            {
                                var filesize = ConvertBytesToMegabytes(response.Content.Headers.ContentLength);
                                CalculateStreamQuality(filesize, streamLink, runtime);
                            }
                        }
                    }
                }

最佳答案

您需要调用 SendAsync 并将完成选项参数设置为:HttpCompletionOption.ResponseHeadersRead - 这将使 SendAsync 方法能够完成,而无需尝试分配缓冲区来保存(不存在的数据)有效载荷)。

更新您的代码以使用以下内容:

using (var response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead))
{ 
...
}

关于out-of-memory - HttpClient Head请求内存异常PCL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25477351/

相关文章:

java - 垃圾收集似乎在 Java 中不起作用

c# - 导出大量数据

c# - .Net Core HttpClient - 类型化客户端生命周期

c# - 可移植类库 : recommended replacement for [Serializable]

c# - 可移植类库中的 Type.BaseType

java - 内存不足,无法继续运行 Java 运行时环境

java - 我该如何修复: OutOfMemoryError with External Sorting

java主机名与证书不匹配

httpclient - 无法使用 HttpClient 访问 google 趋势

.net - PCL 中不存在 Assembly.GetExecutingAssembly