【发布时间】:2019-07-15 21:02:45
【问题描述】:
遇到未处理的 OutOfMemoryException。
using(var httpclient = new HttpClient(httpClientHandler))
{
httpclient.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("gzip"));
httpclient.DefaultRequestHeaders.AcceptEncoding.Add(new StringWithQualityHeaderValue("deflate"));
var request = new HttpRequestMessage(HttpMethod.Post, url);
request.Content = new FormUrlEncodedContent(parameters);
var response = await httpclient.SendAsync(request);
var contents = await response.Content.ReadAsStringAsync();
var source = contents.ToString();
return source;
}
我不太确定该怎么做,或者具体原因是什么,我认为这与“等待响应。Content.ReadAsStringAsync();”有关
有人建议使用
ReadAsStreamAsync();
改为输出到文件,但是我需要作为字符串输出到“源”,以便我可以在另一个函数中分析数据..
我还想添加我正在运行的线程..
有没有可能
Response.Content
即使在完成特定功能后仍被存储在内存中?将内存或内容返回源后是否需要处理/清除内存或内容?
【问题讨论】:
-
@HereticMonkey 会调查一下,谢谢
-
您可能还想了解一下是否适合立即使用
Dispose您的HttpClient,就像您对using语句所做的那样。普遍的共识是“是的,它们是一次性的,但是,真的,你想长期使用它们,重复使用它们”。对此有很多讨论(关于 SO 和其他地方)。
标签: c# httpclient