Buang Respons HttpWebRequest di Antara Permintaan Proxy
Beri respons HttpWebRequest lama masa hidup yang jelas agar permintaan proxy berulang tidak menahan sumber daya koneksi tanpa batas.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
Simpan setiap respons HttpWebRequest lama dalam cakupan yang menyelesaikan konsumsinya dan melepaskannya. Di sini destination adalah aliran keluaran aplikasi yang dapat ditulis; blok using melepaskan WebResponse bahkan jika penyalinan gagal, tanpa mengambil alih kepemilikan keluaran tersebut.
Berhasilnya satu permintaan proxy dan menunggunya permintaan berikutnya dapat menandakan respons yang belum selesai menempati sumber daya koneksi. Menerima WebResponse saja tidak menyelesaikan isinya. Batas waktu permintaan membatasi penantian, bukan masa hidup setiap respons yang sudah diperoleh.
Terapkan kepemilikan yang sama pada kesalahan. WebException dapat membawa respons yang diperiksa kode Anda; tutup setelah pemeriksaan. Kegagalan transportasi bisa sama sekali tidak memiliki respons.
Pembuangan melepaskan sumber daya respons tetapi tidak menjanjikan koneksi yang dapat digunakan ulang dalam setiap kasus. Protokol, server, dan konsumsi isi tetap penting.
Ini menyangkut pemeliharaan tumpukan WebRequest lama. Dalam kode yang lebih baru, ikuti kepemilikan respons/aliran klien sebenarnya; untuk HttpClient, simpan respons dalam cakupan pembuangannya, dan bedakan kegagalan pembersihan ini dari autentikasi proxy atau pemilihan rute.