Eliberați răspunsurile HttpWebRequest între cererile proxy
Dați răspunsurilor vechi HttpWebRequest o durată de viață clară, astfel încât cererile proxy repetate să nu rețină resurse de conexiune la nesfârșit.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Păstrați fiecare răspuns vechi HttpWebRequest într-un domeniu care îi încheie consumul și îl eliberează. Aici destination este fluxul de ieșire scriibil al aplicației; blocul using eliberează WebResponse chiar dacă copierea eșuează, fără a prelua proprietatea asupra acelei ieșiri.
Faptul că o cerere proxy reușește și următoarele așteaptă poate indica răspunsuri neterminate care ocupă resurse de conexiune. Doar primirea WebResponse nu încheie corpul acestuia. Timeout-ul cererii limitează o așteptare, nu durata de viață a fiecărui răspuns deja obținut.
Aplicați aceeași proprietate erorilor. O WebException poate purta un răspuns pe care codul îl inspectează; închideți-l după inspecție. O defecțiune de transport poate să nu aibă deloc răspuns.
Eliberarea returnează resursele răspunsului, dar nu promite conexiuni reutilizabile în fiecare caz. Protocolul, serverul și consumul corpului contează în continuare.
Acest lucru privește întreținerea stivei WebRequest vechi. În codul mai nou, urmați proprietatea răspuns/flux a clientului real; pentru HttpClient, păstrați răspunsurile în domeniul lor de eliberare, și distingeți această defecțiune de curățare de autentificarea proxy sau de selectarea rutei.