簡體   English   中英

HttpClient中的OutOfMemory異常

[英]OutOfMemory exception in HttpClient

被未處理的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();

而是輸出到文件,但是我需要以字符串形式輸出到“ source”,以便可以在另一個函數中分析數據。

我還想補充一點,我正在運行線程。

有可能

Response.Content

完成特定功能后仍存儲在內存中嗎? 將其退還給源之后,是否需要處置/清除內存或內容?

建議的解決方案是正確的。 您的應用程序所在的操作系統內存似乎沒有足夠的內存。 為了解決此問題,明智的做法是將流作為文件而不是內存寫入文件到磁盤。 TransferEncodingChunked也可能有幫助,但發件人需要支持它。

using (FileStream fs = File.Create("fileName.ext")
{
    ....
    var stream = await response.Content.ReadAsStreamAsync();
    await fs.CopyToAsync(stream);
    fs.Close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM