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

Giữ mỗi phản hồi HttpWebRequest cũ trong một phạm vi hoàn tất việc tiêu thụ và giải phóng nó. Ở đây destination là luồng đầu ra có thể ghi của ứng dụng; khối using giải phóng WebResponse ngay cả khi việc sao chép thất bại, mà không nhận quyền sở hữu đối với đầu ra đó.

Việc một yêu cầu proxy thành công và các yêu cầu sau phải chờ có thể cho thấy những phản hồi chưa hoàn tất đang chiếm tài nguyên kết nối. Chỉ nhận WebResponse không làm kết thúc phần thân của nó. Thời gian chờ của yêu cầu giới hạn việc chờ đợi, không giới hạn vòng đời của mỗi phản hồi đã lấy được.

Áp dụng cùng quyền sở hữu cho lỗi. Một WebException có thể mang theo phản hồi mà mã của bạn kiểm tra; hãy đóng nó sau khi kiểm tra. Một lỗi truyền tải có thể không có phản hồi nào cả.

Việc giải phóng trả lại tài nguyên của phản hồi nhưng không hứa hẹn kết nối có thể tái sử dụng trong mọi trường hợp. Giao thức, máy chủ và việc tiêu thụ phần thân vẫn quan trọng.

Điều này liên quan đến việc bảo trì ngăn xếp WebRequest cũ. Trong mã mới hơn, hãy theo quyền sở hữu phản hồi/luồng của ứng dụng khách thực tế; với HttpClient, giữ phản hồi trong phạm vi giải phóng của chúng, và phân biệt lỗi dọn dẹp này với xác thực proxy hoặc chọn tuyến.

Bài viết liên quan