大家好,我正在尝试执行 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/