2009-08-02 19 views
10

Jestem bardzo zaskoczony, widząc HttpWebRequest nie ma blisko metody, ale jego przeciw-część HttpWebResponse ma. To sprawia, że ​​jestem nieco zdezorientowany i niewygodny. :-)HttpWebRequest nie ma metody zamknięcia?

Tak więc, musimy tylko wywołać Close na odpowiedź i nie trzeba traktować z prośbą? Moje obawy dotyczą przecieków i lepszej efektywności wykorzystania zasobów. Używam VSTS2008 + C# + .Net 3.5.

+1

(Skasowałem duplikat i połączono go z dodatkową treścią) –

+0

Zapytałeś ** ponownie ** (teraz usunięto)? Nie rób tego, proszę ... –

Odpowiedz

29

Tak, wystarczy wywołać to w obiekcie odpowiedzi.

Żądanie absolutnie nic nie robi samodzielnie. Nie otwiera gniazda lub czegoś. Zawiera tylko niektóre dane i możesz je po prostu zignorować i wyrzucić, jeśli ich nie potrzebujesz (jest to czysty zarządzany zasób, a za jego sprawą zajmie się garbage collector). Rzeczywiste rzeczy dzieją się po wywołaniu jednej z metod GetResponse.

+0

Witam, czy istnieje dokumentacja MS lub inne "oficjalne" miejsce wyjaśniające wewnętrzne działanie HttpWebRequest/Response? – tamberg

+0

@tamberg możesz pobrać kod źródłowy i przeczytać go sam: http://referencesource.microsoft.com/netframework.aspx –

+0

Wygląda na to, że nie działa. Przynajmniej dla połączenia SSL, nie wydaje się, aby wysłać blisko serwera. – Tuntable

1

Metoda zamknięta, do której odwołujesz się w HttpWebResponse, służy do wysyłania gotowej odpowiedzi do serwera WWW. W obiekcie HttpWebRequest cała zawartość jest dostępna po rozpoczęciu przetwarzania, więc nie ma potrzeby zamykania i komunikowania się z serwerem.

4

Analogia:

Jeśli chcę z tobą rozmawiać i jestem już pewien, czy chcę z tobą mówić będę po prostu nazwać swoje nazwisko (request). Od Ciebie zależy jednak, kiedy, jak i na co odpowiedzieć (odpowiedź). Więc będziesz miał większą kontrolę nad komunikacją niż ja, właśnie ją zacząłem.

Powiązane problemy