【问题标题】:HttpClient Head request memory exception PCLHttpClient Head请求内存异常PCL
【发布时间】:2014-08-24 23:46:23
【问题描述】:

大家好,我正在尝试进行头部请求以获取文件的内容长度(它很大 >= 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);
                            }
                        }
                    }
                }

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多