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

Každú starú odpoveď HttpWebRequest držte v rozsahu, ktorý dokončí jej spotrebu a uvoľní ju. Tu destination je zapisovateľný výstupný prúd aplikácie; blok using uvoľní WebResponse aj keď kopírovanie zlyhá, bez prevzatia vlastníctva tohto výstupu.

Úspech jednej proxy požiadavky a čakanie ďalších môže znamenať nedokončené odpovede zaberajúce prostriedky pripojenia. Samotné prijatie WebResponse nedokončí jeho telo. Časový limit požiadavky obmedzuje čakanie, nie životnosť každej už získanej odpovede.

Rovnaké vlastníctvo uplatnite na chyby. WebException môže niesť odpoveď, ktorú váš kód skúma; po skúmaní ju zavrite. Zlyhanie prenosu nemusí mať žiadnu odpoveď.

Uvoľnenie vráti prostriedky odpovede, ale v každom prípade nesľubuje znovupoužiteľné pripojenia. Protokol, server a spotreba tela sú stále dôležité.

Týka sa údržby starého zásobníka WebRequest. V novšom kóde sa riaďte vlastníctvom odpovede/prúdu skutočného klienta; pri HttpClient držte odpovede v ich rozsahu uvoľnenia a túto chybu čistenia odlíšte od overovania proxy alebo voľby trasy.

Súvisiace články