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

Har bir eski HttpWebRequest javobini uni iste'mol qilib bo'lib bo'shatadigan doirada saqlang. Bu yerda destination ilovaning yoziladigan chiqish oqimi; using bloki nusxalash muvaffaqiyatsiz bo'lsa ham WebResponse'ni bo'shatadi, o'sha chiqish egaligini o'z zimmasiga olmay.

Bitta proksi so'rovining muvaffaqiyatli bo'lishi va keyingilarining kutishi tugallanmagan javoblar ulanish resurslarini egallayotganini ko'rsatishi mumkin. Faqat WebResponse olish uning tanasini tugatmaydi. So'rov vaqt chegarasi kutishni cheklaydi, allaqachon olingan har bir javobning umrini emas.

Xuddi shu egalikni xatolarga ham qo'llang. WebException kodingiz tekshiradigan javobni olib yurishi mumkin; tekshiruvdan keyin uni yoping. Transport nosozligida javob umuman bo'lmasligi mumkin.

Bo'shatish javob resurslarini qaytaradi, lekin har qanday holatda qayta ishlatiladigan ulanishlarni va'da qilmaydi. Protokol, server va tanani iste'mol qilish hali ham muhim.

Bu eski WebRequest stekini saqlashga tegishli. Yangiroq kodda haqiqiy mijozning javob/oqim egaligiga amal qiling; HttpClient uchun javoblarni ularning bo'shatish doirasida saqlang, va bu tozalash nosozligini proksi autentifikatsiyasi yoki marshrut tanlashdan alohida ajrating.

O'xshash maqolalar