출처 : c# - WebRequest/WebResponse Memory leak - Stack Overflow
.NET Framework의 HttpWebReqeust , HttpWebResponse Memory가 누수된다는 현상이 보고되고 있습니다.
4.5 이상의 Version을 사용하시게 되면 , .NET Framework에서 제공하는 HttpClient 로 대체하는 것을 권장 드리고 싶습니다.
HttpWebRequest , HttpWebResponse 사용 시에 최대한 Memory 누수를 줄일 수 있는 방안을 찾고 있습니다....
//AllowWriteStreamBuffering 를 false 로 처리
hwreq.AllowWriteStreamBuffering = false;
//httpWebResponse using 및 GetResponse Close 처리 진행 , Stream Close 처리 진행
using (HttpWebResponse hwrres = (HttpWebResponse)hwreq.GetResponse())
{
if (hwrres.StatusCode == HttpStatusCode.InternalServerError)
{
}
if (hwrres.StatusCode == HttpStatusCode.OK)
{
using (Stream stream = hwrres.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.Default, true))
{
resdata = sr.ReadToEnd();
}
}
hwrres.GetResponseStream().Close();
hwrres.GetResponseStream().Dispose();
}
}
private static string HttpRequest(string url, byte[] bytePost )
{
lock (lockObj)
{
int resultNum = -1;
string resdata = "";
try
{
hwreq = (HttpWebRequest)WebRequest.Create(url);
//
hwreq.AllowWriteStreamBuffering = false;
hwreq.KeepAlive = true;
hwreq.Accept = "*/*";
hwreq.AllowAutoRedirect = true;
hwreq.UserAgent = "http_requester/0.1";
hwreq.Timeout = 15 * 1000;
hwreq.Method = "POST";
hwreq.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
hwreq.ContentLength = bytePost.Length;
using (Stream requestStream = hwreq.GetRequestStream())
requestStream.Write(bytePost, 0, bytePost.Length);
using (HttpWebResponse hwrres = (HttpWebResponse)hwreq.GetResponse())
{
if (hwrres.StatusCode == HttpStatusCode.InternalServerError)
{
}
if (hwrres.StatusCode == HttpStatusCode.OK)
{
using (Stream stream = hwrres.GetResponseStream())
{
using (StreamReader sr = new StreamReader(stream, System.Text.Encoding.Default, true))
{
resdata = sr.ReadToEnd();
}
}
hwrres.GetResponseStream().Close();
hwrres.GetResponseStream().Dispose();
}
}
}
catch (WebException ex)
{
resdata = "{\"result\":\"-1\",\"msg\":\"" + ex.Message + "\"}";
}
finally
{
}
return resdata;
}
}
'C#' 카테고리의 다른 글
특정 위치에 파일 중복 여부 체크 하고 새로운 파일명 구하기 예제 (0) | 2023.08.23 |
---|---|
C# Process.Start(string fileName) 이용 시에 0x80004005 발생 해결 방안 모색 (0) | 2023.02.28 |
[C#] WebView2 Control 이용 PDF 파일 오픈 후 Key , mouse 입력 인쇄 시도 (0) | 2022.05.26 |
[RTSP] TCPClient를 이용하여 OPTIONS 요청 결과 받기 (0) | 2022.03.03 |
VirtualBox 호스트와 멀티캐스트(Multicast) 패킷 송/수신 테스트 진행 (0) | 2022.03.02 |