none
HttpClient下文件下载时内存溢出问题

    问题

  •    

    先给大家说声谢谢!dotnet版本4.6.1,下面我来描述我遇到的问题:

    HttpMessageHandler handler = new HttpClientHandler() { AllowAutoRedirect = false };
                    HttpClient client = new HttpClient(handler);
                    //client.MaxResponseContentBufferSize = 1024 * 1024 * 4;

                    Task<HttpResponseMessage> resultTask = client.GetAsync(url);
                    HttpResponseMessage httpResponse = resultTask.Result;
                    httpResponseMessage = httpResponse;
                    Stream st = httpResponse.Content.ReadAsStreamAsync().Result;
                    revLen= st.Read(buffer,0, (int)st.Length);
                    st.Close();
                    st.Dispose();            
                    client.Dispose();

    我有以上这么一段代码,当这段代码循环执行时会出现IIS内存暴涨,最终导致报错(内存溢出错误)。我确保传入的参数buffer数组只有2M,而且只new了一次,请问这个什么问题呢?如果我把这段代码换成以下代码,这个问题就不存在了:下面这段代码依旧循环调用

         WebClient webClient = new WebClient();
                byte[] data= webClient.DownloadData(url);
                Array.Copy(data,0,buffer,0,data.Length);

                    
    • 已编辑 MetalMax 2016年8月11日 5:29
    2016年8月11日 5:29

答案