Vapauta HttpWebRequest-vastaukset välityspalvelinpyyntöjen välillä
Anna vanhoille HttpWebRequest-vastauksille selkeä elinkaari, jotta toistuvat välityspalvelinpyynnöt eivät pidä yhteysresursseja määräämättömästi.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Pidä jokainen vanha HttpWebRequest-vastaus laajuudessa, joka kuluttaa sen loppuun ja vapauttaa sen. Tässä destination on sovelluksen kirjoitettava tulostevirta; using-lohko vapauttaa WebResponsen, vaikka kopiointi epäonnistuisi, ottamatta kyseisen tulosteen omistajuutta.
Yhden välityspalvelinpyynnön onnistuminen ja myöhempien odottaminen voi viitata keskeneräisiin vastauksiin, jotka varaavat yhteysresursseja. Pelkkä WebResponsen vastaanottaminen ei lopeta sen runkoa. Pyynnön aikakatkaisu rajoittaa odotusta, ei jokaisen jo saadun vastauksen elinkaarta.
Sovella samaa omistajuutta virheisiin. WebException voi kuljettaa vastauksen, jota koodisi tutkii; sulje se tutkimisen jälkeen. Siirtovirheellä ei välttämättä ole vastausta lainkaan.
Vapauttaminen palauttaa vastauksen resurssit, mutta ei lupaa uudelleenkäytettäviä yhteyksiä joka tapauksessa. Protokolla, palvelin ja rungon kulutus ovat edelleen merkityksellisiä.
Tämä koskee vanhan WebRequest-pinon ylläpitoa. Noudata uudemmassa koodissa todellisen asiakkaan vastaus/virta-omistajuutta; HttpClientille pidä vastaukset niiden vapautuslaajuudessa ja erota tämä siivousvirhe välityspalvelimen todennuksesta tai reitin valinnasta.