Sprostite odgovore HttpWebRequest med proxy zahtevami
Dajte starim odgovorom HttpWebRequest jasno življenjsko dobo, da ponovljene proxy zahteve ne zadržujejo povezovalnih virov v nedogled.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Vsak stari odgovor HttpWebRequest hranite v obsegu, ki dokonča njegovo porabo in ga sprosti. Tu je destination zapisljiv izhodni tok aplikacije; blok using sprosti WebResponse tudi če kopiranje ne uspe, ne da bi prevzel lastništvo tega izhoda.
Uspeh ene proxy zahteve in čakanje naslednjih lahko kaže na nedokončane odgovore, ki zasedajo povezovalne vire. Samo prejetje WebResponse ne dokonča njegovega telesa. Časovna omejitev zahteve omejuje čakanje, ne življenjske dobe vsakega že pridobljenega odgovora.
Enako lastništvo uporabite pri napakah. WebException lahko nosi odgovor, ki ga vaša koda pregleda; zaprite ga po pregledu. Pri transportni napaki morda ni nobenega odgovora.
Sprostitev vrne vire odgovora, vendar v vsakem primeru ne obljublja znova uporabljivih povezav. Protokol, strežnik in poraba telesa so še vedno pomembni.
To zadeva vzdrževanje starega sklada WebRequest. V novejši kodi sledite lastništvu odgovora/toka dejanskega odjemalca; pri HttpClient hranite odgovore v obsegu njihove sprostitve in to napako čiščenja ločite od preverjanja proxy ali izbire poti.