using (WebResponse response = request.GetResponse())
{
    response.GetResponseStream().CopyTo(destination);
}

ہر پرانے HttpWebRequest جواب کو ایسے دائرے میں رکھیں جو اس کا استعمال مکمل کر کے اسے آزاد کر دے۔ یہاں destination ایپلیکیشن کا قابلِ تحریر آؤٹ پٹ اسٹریم ہے؛ using بلاک WebResponse کو آزاد کرتا ہے چاہے کاپی ناکام ہو، اس آؤٹ پٹ کی ملکیت لیے بغیر۔

ایک پراکسی درخواست کا کامیاب ہونا اور بعد والوں کا انتظار کرنا نامکمل جوابات کے کنکشن وسائل پر قبضے کی نشاندہی کر سکتا ہے۔ صرف WebResponse وصول کرنا اس کے باڈی کو مکمل نہیں کرتا۔ درخواست کی ٹائم آؤٹ انتظار کو محدود کرتی ہے، پہلے سے حاصل ہر جواب کی زندگی کو نہیں۔

غلطیوں پر بھی وہی ملکیت لاگو کریں۔ WebException ایسا جواب لے جا سکتا ہے جس کا آپ کا کوڈ معائنہ کرتا ہے؛ معائنے کے بعد اسے بند کریں۔ ٹرانسپورٹ ناکامی میں کوئی جواب ہی نہ ہو۔

ضائع کرنا جواب کے وسائل واپس کرتا ہے مگر ہر صورت میں دوبارہ استعمال کے قابل کنکشن کی ضمانت نہیں دیتا۔ پروٹوکول، سرور اور باڈی کا استعمال اب بھی اہم ہے۔

یہ پرانے WebRequest اسٹیک کی دیکھ بھال سے متعلق ہے۔ نئے کوڈ میں اصل کلائنٹ کی جواب/اسٹریم ملکیت کی پیروی کریں؛ HttpClient کے لیے، جوابات کو ان کے ضائع کرنے کے دائرے میں رکھیں، اور اس صفائی کی ناکامی کو پراکسی تصدیق یا راستہ منتخب کرنے سے الگ پہچانیں۔

متعلقہ مضامین