Frigör HttpWebRequest-svar mellan proxybegäranden
Ge äldre HttpWebRequest-svar en tydlig livslängd så att upprepade proxybegäranden inte håller anslutningsresurser obestämt.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Håll varje äldre HttpWebRequest-svar i ett omfång som slutför förbrukningen och frigör det. Här är destination programmets skrivbara utdataström; using-blocket frigör WebResponse även om kopieringen misslyckas, utan att ta över ägandet av den utdatan.
Att en proxybegäran lyckas och senare väntar kan tyda på ofullständiga svar som upptar anslutningsresurser. Att bara ta emot WebResponse slutför inte kroppen. Tidsgränsen för begäran begränsar en väntan, inte livslängden för varje svar som redan hämtats.
Tillämpa samma ägande på fel. En WebException kan bära ett svar som din kod granskar; stäng det efter granskningen. Ett transportfel kan helt sakna svar.
Frigöring ger tillbaka svarets resurser men lovar inte återanvändbara anslutningar i alla fall. Protokoll, server och kroppsförbrukning spelar fortfarande roll.
Detta gäller underhåll av den äldre WebRequest-stacken. I nyare kod, följ ägandet av svar/ström för den faktiska klienten; för HttpClient, håll svar inom deras frigöringsomfång, och skilj detta städningsfel från proxyautentisering eller vägval.