Szabadítsa fel a HttpWebRequest válaszait a proxykérések között
Adjon a régi HttpWebRequest-válaszoknak világos élettartamot, hogy az ismételt proxykérések ne tartsák vissza korlátlanul a kapcsolati erőforrásokat.
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.