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

Tartsa az egyes régi HttpWebRequest-válaszokat olyan hatókörben, amely befejezi a fogyasztásukat és felszabadítja őket. Itt destination az alkalmazás írható kimeneti adatfolyama; a using blokk akkor is felszabadítja a WebResponse-t, ha a másolás meghiúsul, anélkül hogy átvenné a kimenet tulajdonjogát.

Ha egy proxykérés sikerül, a későbbiek pedig várakoznak, az befejezetlen válaszokra utalhat, amelyek kapcsolati erőforrásokat foglalnak. A WebResponse puszta átvétele nem fejezi be a törzsét. A kérés időtúllépése a várakozást korlátozza, nem a már megszerzett válaszok élettartamát.

Ugyanezt a tulajdonjogot alkalmazza a hibákra is. A WebException olyan választ hordozhat, amelyet a kódja vizsgál; a vizsgálat után zárja be. Szállítási hiba esetén egyáltalán nem is lehet válasz.

A felszabadítás visszaadja a válasz erőforrásait, de nem ígér minden esetben újrahasznosítható kapcsolatokat. A protokoll, a kiszolgáló és a törzs fogyasztása továbbra is számít.

Ez a régi WebRequest-verem karbantartását érinti. Újabb kódban kövesse a tényleges ügyfél válasz-/adatfolyam-tulajdonjogát; a HttpClient esetében tartsa a válaszokat a felszabadítási hatókörükben, és különítse el ezt a tisztítási hibát a proxyhitelesítéstől vagy az útvonalválasztástól.

Kapcsolódó cikkek