using (WebResponse response = request.GetResponse())
{
    response.GetResponseStream().CopyTo(destination);
}

Држете го секој стар одговор на HttpWebRequest во опсег што ја завршува неговата потрошувачка и го ослободува. Овде destination е излезниот поток на апликацијата за пишување; блокот using го ослободува WebResponse дури и ако копирањето не успее, без да преземе сопственост врз тој излез.

Успехот на едно прокси барање и чекањето на следните може да укажува на недовршени одговори што заземаат ресурси за врска. Самото примање на WebResponse не го завршува неговото тело. Временското ограничување на барањето го ограничува чекањето, не животниот век на секој веќе добиен одговор.

Применете ја истата сопственост на грешките. WebException може да носи одговор што вашиот код го проверува; затворете го по проверката. Транспортниот неуспех може воопшто да нема одговор.

Ослободувањето ги враќа ресурсите на одговорот, но не ветува повеќекратно употребливи врски во секој случај. Протоколот, серверот и потрошувачката на телото сè уште се важни.

Ова се однесува на одржувањето на стариот стек WebRequest. Во поновиот код следете ја сопственоста на одговор/поток на вистинскиот клиент; за HttpClient, држете ги одговорите во нивниот опсег на ослободување, и разликувајте го овој неуспех при чистење од прокси автентикацијата или изборот на рута.

Поврзани статии