Gwaredu Ymatebion HttpWebRequest rhwng Ceisiadau Proesi
Rhowch oes glir i ymatebion HttpWebRequest hen ffasiwn fel nad yw ceisiadau proesi ailadroddus yn dal adnoddau cysylltu'n amhenodol.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Cadwch bob ymateb HttpWebRequest hen ffasiwn mewn cwmpas sy'n gorffen ei fwyta ac yn ei ryddhau. Yma destination yw ffrwd allbwn ysgrifennadwy'r cymhwysiad; mae'r bloc using yn rhyddhau'r WebResponse hyd yn oed os bydd y copïo'n methu, heb gymryd perchnogaeth o'r allbwn hwnnw.
Gall un cais proesi lwyddiannus a cheisiadau diweddarach yn aros ddangos ymatebion heb eu gorffen yn meddiannu adnoddau cysylltu. Nid yw derbyn WebResponse yn gorffen ei gorff. Mae terfyn amser y cais yn cyfyngu ar aros, nid ar oes pob ymateb a gafwyd eisoes.
Cymhwyswch yr un berchnogaeth i wallau. Gall WebException gario ymateb y mae eich cod yn ei archwilio; caewch ef ar ôl archwilio. Efallai na fydd gan fethiant cludiant unrhyw ymateb o gwbl.
Mae gwaredu'n rhyddhau adnoddau'r ymateb ond nid yw'n addo cysylltiadau ailddefnyddiadwy ym mhob achos. Mae protocol, gweinydd a bwyta'r corff yn dal i fod o bwys.
Mae hyn yn ymwneud â chynnal y pentwr WebRequest hen ffasiwn. Dilynwch berchnogaeth ymateb/ffrwd y cleient gwirioneddol mewn cod mwy newydd; ar gyfer HttpClient, cadwch ymatebion yn eu cwmpas gwaredu, a nodwch y methiant glanhau hwn ar wahân i ddilysu proesi neu ddewis llwybr.