Ослободете ги одговорите на HttpWebRequest помеѓу прокси барањата
Дајте им на старите одговори на HttpWebRequest јасен животен век за повторените прокси барања да не ги држат ресурсите за врска неограничено.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Држете го секој стар одговор на HttpWebRequest во опсег што ја завршува неговата потрошувачка и го ослободува. Овде destination е излезниот поток на апликацијата за пишување; блокот using го ослободува WebResponse дури и ако копирањето не успее, без да преземе сопственост врз тој излез.
Успехот на едно прокси барање и чекањето на следните може да укажува на недовршени одговори што заземаат ресурси за врска. Самото примање на WebResponse не го завршува неговото тело. Временското ограничување на барањето го ограничува чекањето, не животниот век на секој веќе добиен одговор.
Применете ја истата сопственост на грешките. WebException може да носи одговор што вашиот код го проверува; затворете го по проверката. Транспортниот неуспех може воопшто да нема одговор.
Ослободувањето ги враќа ресурсите на одговорот, но не ветува повеќекратно употребливи врски во секој случај. Протоколот, серверот и потрошувачката на телото сè уште се важни.
Ова се однесува на одржувањето на стариот стек WebRequest. Во поновиот код следете ја сопственоста на одговор/поток на вистинскиот клиент; за HttpClient, држете ги одговорите во нивниот опсег на ослободување, и разликувајте го овој неуспех при чистење од прокси автентикацијата или изборот на рута.