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

Laikykite kiekvieną seną HttpWebRequest atsakymą apimtyje, kuri baigia jo vartojimą ir jį atlaisvina. Čia destination yra programos rašomasis išvesties srautas; using blokas atlaisvina WebResponse net jei kopijavimas nepavyksta, neperimdamas tos išvesties nuosavybės.

Sėkminga viena tarpinio serverio užklausa ir vėlesnių laukimas gali rodyti nebaigtus atsakymus, užimančius ryšio išteklius. Vien WebResponse gavimas neužbaigia jo turinio. Užklausos skirtasis laikas riboja laukimą, o ne kiekvieno jau gauto atsakymo gyvavimo laiką.

Taikykite tą pačią nuosavybę klaidoms. WebException gali pernešti atsakymą, kurį jūsų kodas tiria; uždarykite jį po tyrimo. Perdavimo gedimas gali iš viso neturėti atsakymo.

Atlaisvinimas grąžina atsakymo išteklius, bet ne kiekvienu atveju žada daugkartinio naudojimo ryšius. Protokolas, serveris ir turinio vartojimas vis dar svarbūs.

Tai susiję su seno WebRequest krūvos priežiūra. Naujesniame kode laikykitės tikrojo kliento atsakymo/srauto nuosavybės; HttpClient atveju laikykite atsakymus jų atlaisvinimo apimtyje, ir atskirkite šį valymo gedimą nuo tarpinio serverio autentifikavimo ar maršruto pasirinkimo.

Susiję straipsniai