გაათავისუფლეთ HttpWebRequest-ის პასუხები პროქსი მოთხოვნებს შორის
მიეცით ძველ HttpWebRequest პასუხებს მკაფიო სიცოცხლის ხანგრძლივობა, რათა განმეორებულმა პროქსი მოთხოვნებმა კავშირის რესურსები განუსაზღვრელი ხნით არ დაიკავონ.
using (WebResponse response = request.GetResponse())
{
response.GetResponseStream().CopyTo(destination);
}
შეინახეთ ყოველი ძველი HttpWebRequest პასუხი იმ ფარგლებში, რომელიც დაასრულებს მის მოხმარებას და გაათავისუფლებს მას. აქ destination არის აპლიკაციის ჩასაწერი გამომავალი ნაკადი; using ბლოკი ათავისუფლებს WebResponse-ს მაშინაც კი, თუ კოპირება ვერ მოხერხდა, ამ გამომავალზე მფლობელობის გადაუღებლად.
ერთი პროქსი მოთხოვნის წარმატება და შემდგომების ლოდინი შეიძლება მიუთითებდეს დაუმთავრებელ პასუხებზე, რომლებიც კავშირის რესურსებს იკავებენ. მხოლოდ WebResponse-ის მიღება მის სხეულს არ ამთავრებს. მოთხოვნის ვადა ზღუდავს ლოდინს და არა უკვე მიღებული თითოეული პასუხის სიცოცხლის ხანგრძლივობას.
გამოიყენეთ იგივე მფლობელობა შეცდომებზე. WebException შეიძლება ატარებდეს პასუხს, რომელსაც თქვენი კოდი ამოწმებს; დახურეთ იგი შემოწმების შემდეგ. ტრანსპორტის უკმარისობას შეიძლება საერთოდ არ ჰქონდეს პასუხი.
გათავისუფლება აბრუნებს პასუხის რესურსებს, მაგრამ ყველა შემთხვევაში არ ჰპირდება ხელახლა გამოსაყენებელ კავშირებს. პროტოკოლი, სერვერი და სხეულის მოხმარება კვლავ მნიშვნელოვანია.
ეს ეხება ძველი WebRequest სტეკის მოვლას. უფრო ახალ კოდში მიჰყევით რეალური კლიენტის პასუხის/ნაკადის მფლობელობას; HttpClient-ისთვის, შეინახეთ პასუხები მათ გათავისუფლების ფარგლებში, და განასხვავეთ ეს გაწმენდის უკმარისობა პროქსის ავთენტიფიკაციისგან ან მარშრუტის არჩევისგან.