Frigjør HttpWebRequest-svar mellom proxyforespørsler
Gi eldre HttpWebRequest-svar en tydelig levetid slik at gjentatte proxyforespørsler ikke holder tilkoblingsressurser ubestemt.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Hold hvert eldre HttpWebRequest-svar i et omfang som fullfører forbruket og frigjør det. Her er destination applikasjonens skrivbare utdatastrøm; using-blokken frigjør WebResponse selv om kopieringen mislykkes, uten å overta eierskapet til den utdataen.
At én proxyforespørsel lykkes og senere venter, kan tyde på ufullstendige svar som opptar tilkoblingsressurser. Bare det å motta WebResponse fullfører ikke kroppen. Tidsavbruddet for forespørselen begrenser en venting, ikke levetiden til hvert svar som allerede er hentet.
Bruk samme eierskap på feil. En WebException kan bære et svar som koden din undersøker; lukk det etter undersøkelsen. En transportfeil kan ikke ha noe svar i det hele tatt.
Frigjøring gir tilbake ressursene til svaret, men lover ikke gjenbrukbare tilkoblinger i alle tilfeller. Protokoll, server og kroppsforbruk betyr fortsatt noe.
Dette gjelder vedlikehold av den eldre WebRequest-stakken. I nyere kode, følg svar-/strømeierskapet til den faktiske klienten; for HttpClient, hold svar innenfor frigjøringsomfanget, og skill denne oppryddingsfeilen fra proxyautentisering eller rutevalg.